【问题标题】:Is there any function that compares lengths of strings accordingly in C# (.NET)?在 C# (.NET) 中是否有任何函数可以相应地比较字符串的长度?
【发布时间】:2009-04-04 21:07:21
【问题描述】:

对不起,不知道 Length 是在构建时计算的!!

我有 200 个字符长的字符串 A,5 个字符的长字符串 B 如果我这样做了

 int Al = A.length;
 int Bl = B.length;

然后比较一下——一切看起来都很好但是如果我这样做几百万次 计算一下,对于我需要的东西来说太贵了。

更简单、更整洁的方法是一些可以比较两个字符串并告诉我另一个字符串何时至少与另一个字符串相同的函数。 类似 (compare_string_lengths(stringA,stringB) -> 其中字符串 B 必须至少与字符串 A 一样长(字符)才能为函数返回 TRUE。

是的, 我知道该函数不知道哪个字符串更短,但是如果两个字符串的长度将并行计算,那么当一个字符串超过另一个时,函数就知道要“回答”什么。

感谢任何提示。

【问题讨论】:

  • 你可以删除这个问题,因为它有缺陷的前提使它毫无意义。
  • 这是stackoverflow.com/questions/717801/…的一部分吗?
  • @Brian:为什么要删除?这可能对遇到同样问题的人有所帮助。
  • 您是否使用了分析器?问题可能出在字符串创建/复制中,例如在连接时。如果没有进一步的代码/分析,这很难说。

标签: c# string compare


【解决方案1】:

如果您只需要知道字符串的长度是否不同(或者如果您希望在比较之前检查长度是否相等),我认为您不能比比较 Length 属性更快。从字符串中检索长度是一个 O(1) 操作。

要实际比较字符串,您需要查看每个字符,这使其成为 O(n) 操作。

编辑:

如果事情运行得太慢,您应该尝试查看分析器,最慢的部分是什么?也许是你的字符串的构造需要时间?

【讨论】:

    【解决方案2】:

    没有什么比比较两个字符串的长度更便宜的了。

    如果要在字符串列表中查找字符串,请使用 Hashtable,例如:

        var x = new System.Collections.Generic.Dictionary<string, bool>();
        x.Add("string", true);
        if (x.ContainsKey("string"))
            Console.WriteLine("Found string.");
    

    这速度快得惊人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 1970-01-01
      • 2021-04-19
      • 2016-08-10
      • 2013-02-12
      • 2023-04-10
      相关资源
      最近更新 更多