在我最近参加的一次面试中,被问到的编程问题是这样的。编写一个将两个字符串作为输入的函数。输出应该是连接的结果。
条件:不应使用 StringBuffer.Append 或 StringBuilder.Append 或字符串对象进行连接;也就是说,他们要我实现 StringBuilder 或 StringBuffer 的 Append 函数工作原理的伪代码实现。
这是我做的:
static char[] AppendStrings(string input, string append)
{
char[] inputCharArray = input.ToCharArray();
char[] appendCharArray = append.ToCharArray();
char[] outputCharArray = new char[inputCharArray.Length + appendCharArray.Length];
for (int i = 0; i < inputCharArray.Length; i++)
{
outputCharArray[i] = inputCharArray[i];
}
for (int i = 0; i < appendCharArray.Length; i++)
{
outputCharArray[input.Length + i] = appendCharArray[i];
}
return outputCharArray;
}
虽然这是一个可行的解决方案,但是否有更好的做事方式?
最佳答案
LINQ 合法吗?字符串 只是 可以被视为字符的枚举,因此它们可以与 LINQ 一起使用(即使涉及一些成本,请参阅注释):
string a = "foo";
string b = "bar";
string c = new string(a.AsEnumerable().Concat(b).ToArray());
或使用您的方法签名:
static char[] AppendStrings(string input, string append)
{
return input.AsEnumerable().Concat(append).ToArray();
}
关于c# - 在不使用 StringBuffer.Append 或 StringBuilder.Append 的情况下在 Java/C# 中追加字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5559150/