c# - ReverseString,一个 C# 面试题

标签 c#

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

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);
}

关于c# - ReverseString,一个 C# 面试题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1009689/

相关文章:

c# - 导入图片并保存到隔离存储WP7

c# - LINQ 交叉连接错误

c# - JSOn 对象未在 wcf web 服务端正确反序列化

c# - 如何防止 "configSections"的 web.config 文件继承?

c# - 从 SessionFactory 获取 ConnectionProvider

c# - 密封类和带有私有(private)构造函数的密封类之间的区别

c# - 删除不触发 Dynamics CRM 的消息插件

c# - 在RelativeLayout中动态绑定(bind)多个图像与MVVM?

c# - DevExpress过滤器编辑器: DropdownList

c# - 如何使用 C# 自动右键单击系统托盘中的图标