【发布时间】:2012-10-10 16:32:35
【问题描述】:
你最好的字符串比较算法是什么?
我发现 O(n)
#include <string>
bool str_cpmr(char* str1, char* str2)
{
int l1 = strlen(str1), l2 = strlen(str2) ;
if(l1 != l2)
return false;
for(int i = 0 ; i < l1 ; i++)
if(str1[i] != str2[i])
return false ;
return true ;
}
我想知道是否还有其他/更好的解决方案。
另外,如何准确测试?
我建议比较
- 100 个匹配项
- 100 个字符串相差一个字符交换
还有更多的测试字符串比较吗?
在 stl c++ (slt string::compare) 中怎么样?
谢谢!!!!!!
【问题讨论】:
-
[被 c++ 标签混淆] 我可能是错的,但不是有
std::string::compare吗?您是否只为strlen包含<string>?使用std::strings! -
比较长度似乎是一种浪费,因为您的 for 循环只能检查 EOS。
-
为什么不拥有 2 个
std::string对象然后做s1 == s2而不是重新发明轮子。 -
你不需要
strlen。这是重复工作。 -
@tenfour:这仍然是 O(n),它只是有一个更高的常数乘数。
标签: c++ string algorithm stl compare