快速 字符串比较问题

Echone902 2007-12-18 11:13:38
数据量很大
如比较字符串 a 为 “123456”
被比较字符串 b 为“sdffsfsfc123456sfafsfsfsf”,
b有很多条,达到 上万条,抽取 被比较字符串 中的包含a 的字符串,主要是要求速度,好的算法能加快速度的???不要用strcmp之类的函数
...全文
356 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
277894613 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 Treazy 的回复:]
C/C++ code
bool MyStrCmp(char *src, char *dst)
{
bool flag = FALSE;

if(strlen(src) != strlen(dst))
{
return flag;
}
while(*src != '\0')
{
if(*src++ != *dst++)
{
flag = FALSE;
break;
}
else
{
flag = TRUE;
}
}
return flag;
}
[/Quote]

这个应该跑不过strcmp的,因为是两次的O(n)复杂度,系统的strcmp会由编译器做嵌入汇编的极限优化的
Echone902 2007-12-18
  • 打赏
  • 举报
回复
谢谢大家·
iambic 2007-12-18
  • 打赏
  • 举报
回复
这个不叫字符串比较,叫字符串匹配、模式匹配、或者子串查找。用正则表达式或者自己写状态机。网上还有很多专门的算法。
另外:几万条也叫“很多”?
Treazy 2007-12-18
  • 打赏
  • 举报
回复

bool MyStrCmp(char *src, char *dst)
{
bool flag = FALSE;

if(strlen(src) != strlen(dst))
{
return flag;
}
while(*src != '\0')
{
if(*src++ != *dst++)
{
flag = FALSE;
break;
}
else
{
flag = TRUE;
}
}
return flag;
}
Holinan 2007-12-18
  • 打赏
  • 举报
回复
即使你不用strcmp,但你要比较两个字符串,自己写判断函数其实最终写的内容还是和strcmp封装里面的内容是一样的
strcmp里面封装的内容应该是和1楼写的一样,先算出两个串的长度进行比较,然后再比较串的内容
Treazy 2007-12-18
  • 打赏
  • 举报
回复
先比较2个字符串的长度
如果一致再比较字符串的内容

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧