2

对不起,不知道长度是在施工时计算的!!

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

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

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

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

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

感谢您的任何提示。

4

2 回答 2

9

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

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

编辑:

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

于 2009-04-04T21:12:13.630 回答
1

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

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

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

这是惊人的快。

于 2009-04-04T21:15:16.320 回答