免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: jemy.zhang
打印 上一主题 下一主题

写的一个查找字符串的小程序,请老大们拍砖 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-02-28 17:29 |只看该作者
原帖由 思一克 于 2007-2-28 17:22 发表
LZ,

用strstr等来写。而不要自己从头写更可靠更节省。

还有,连接库函数未必连接整个库。
还有一个方法,将strstr的原程序直接你自己用。

有道理,可以找找strstr的源代码,呵呵,比较可靠,还能学习一把

论坛徽章:
0
12 [报告]
发表于 2007-02-28 17:29 |只看该作者
记得算法书里面有这个题。那里有一种优化的算法,具体忘了,是应对如下情况:

  1. 原始串acacacacacacacacad
  2. 目标串acacad
  3. 普通算法:
  4. orig:acacacacacacacacad
  5. aim: acacad
  6.           ^不符,移位1
  7. orig:acacacacacacacacad
  8. aim:  acacad
  9.            ^不符,移位1
  10. ....[以下省略]

  11. 介绍的算法
  12. orig:acacacacacacacacad
  13. aim: acacad
  14. exc: ?????2
  15.           ^不符,移位idx[5]=2
  16. orig:acacacacacacacacad
  17. aim:   acacad
  18. exc:   ?????2
  19.             ^不符,移位idx[5]=2

  20. exc移位表的建立原则忘了。目的是减少 比较冗余度
复制代码


找到的片断
1.2 KMP算法
    KMP(Knuth-Morris-Pratt)算法核心思想是:在发生失配时,主串不需要回溯,而是利用已经得到的“部分匹配”结果将模式串右移尽可能远的距离,继续进行比较。这里要强调的是,模式串不一定向右移动一个字符的位置,右移也不一定必须从模式串起点处重新试匹配,即模式串一次可以右移多个字符的位置,右移后可以从模式串起点后的某处开始试匹配。
    假设发生失配时,S≠T[j],1≤i≤N,1≤j≤M。则下一轮比较时,S应与T[next[j]]对齐往后比较
http://tony163163.blog.163.com/blog/static/7294038200701295313391/

算是抛砖引玉吧...虽然连砖也算不上 呵呵

[ 本帖最后由 fnems 于 2007-2-28 17:55 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2007-02-28 22:34 |只看该作者

回复 1楼 jemy.zhang 的帖子

很清晰整洁,要是写一些注释效果会更好。

论坛徽章:
0
14 [报告]
发表于 2007-03-01 11:51 |只看该作者
原帖由 fnems 于 2007-2-28 17:29 发表
记得算法书里面有这个题。那里有一种优化的算法,具体忘了,是应对如下情况:
[code]
原始串acacacacacacacacad
目标串acacad
普通算法:
orig:acacacacacacacacad
aim: acacad
          ^不符,移位1
or ...


說的是Boyer-Moore sunday算法吧,昨天恰巧看了一下,感嘆人真聰明!

[ 本帖最后由 飞灰橙 于 2007-3-1 11:55 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP