对不起,我不知道长度是在施工时计算的!!
我有200个字符长的字符串A,5个字符长的字符串B. 如果我做
int Al = A.length;
int Bl = B.length;
并进行比较 - 一切似乎都很好但是如果我这样做几百万次 计算一些东西,对于我需要的东西来说太贵了。
更简单和更简洁的方法是可以比较两个字符串的一些函数,并告诉我何时另一个与另一个字符串相同。 类似于(compare_string_lengths(stringA,stringB) - >其中字符串B必须至少与字符串A一样长(字符),以便为函数返回TRUE。
是, 我知道函数不知道哪个字符串更短,但是如果两个字符串的长度并行计数,那么当一个字符串超过另一个字符串时,函数知道要“回答”的内容。
感谢任何提示。
答案 0 :(得分:9)
如果您只需要知道字符串的长度是否不同(或者如果您希望在比较之前检查长度是否相等),我认为您不能比比较Length属性更快。从字符串中检索长度是O(1)操作。
实际比较你需要查看每个字符的字符串,这使得它成为O(n)操作。
编辑:
如果事情运行得太慢,你应该试着看一下探查器,最慢的部分是什么?也许是你的字符串构造花费时间?
答案 1 :(得分:1)
比比较两根琴弦的长度便宜一些。
如果要在字符串列表中查找字符串,请使用Hashtable,如:
var x = new System.Collections.Generic.Dictionary<string, bool>();
x.Add("string", true);
if (x.ContainsKey("string"))
Console.WriteLine("Found string.");
这非常快。