我有一个面试问题,要求我对初级程序员编写的一段代码提供“反馈”。他们暗示可能存在问题,并表示它将大量用于大型字符串。

public string ReverseString(string sz) 
{ 
    string result = string.Empty; 
    for(int i = sz.Length-1; i>=0; i--) 
    { 
      result += sz[i] 
    } 
    return result; 
} 

我没发现。我没有看到任何问题。 事后看来,我本可以说用户应该调整大小,但看起来 C# 没有调整大小(我是 C++ 人)。

我最后写了一些东西,比如尽可能使用迭代器,容器中的 [x] 不能随机访问,所以它可能很慢。和杂项。但我明确地说我从来没有优化过 C# 代码,所以我的想法在面试中可能没有让我失望。

我想知道,这段代码有什么问题,你们看到了吗?

-编辑-

我把它变成了一个 wiki 因为可以有几个正确的答案。 此外,我很高兴我明确表示我从来不需要优化 C# 程序并提到了其他杂项。哎呀。我一直认为 C# 在这些类型的事情上没有任何性能问题。糟糕。

请您参考如下方法:

最重要的是?这会降低性能——它必须创建很多字符串(每个字符一个)。最简单的方法是这样的:

public static string Reverse(string sz) // ideal for an extension method 
{ 
    if (string.IsNullOrEmpty(sz) || sz.Length == 1) return sz; 
    char[] chars = sz.ToCharArray(); 
    Array.Reverse(chars); 
    return new string(chars); 
} 


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!