论坛风格切换切换到宽版
  • 2027阅读
  • 3回复

[已处理]字符串简单模式匹配算法与IndexOf方法比较 - Repository - 博... [复制链接]

上一主题 下一主题
离线f2er256hxf
 
发帖
3
C币
13
威望
2
贡献值
0
银元
-1
铜钱
20
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2011-07-16
— 本帖被 Míchal_守护° 执行锁定操作(2012-01-04) —
我写的这个简单模式匹配方法目前还是一个半成品,还有一些地方需要完善,没有考虑在匹配多个字符串的时候各个字符串的hashcode值之和可能会大于Int64.MaxValue,瓷环,当然绝大部分情况下不会发生溢出问题.
主要思想:
暂且先把要被查找的字符串称为源字符串,建筑机械, 要匹配的字符串叫目标字符串好了.
1: 对目标字符串所有字符进行一个Hashcode求和运算.
2:同时对在源字符串对同样长度(该长度必须与目标字符串的长度相同,学化妆,这样可以保证一个求和的hascode表示一个唯一的字符串)的字符进行一个hashcode求各运算.
3:比较二个hashcode值,如果相等则表示匹配成功,否则继续滑动目标字符串,源字符串前进一位,同时计算源字符串的hashcode值,衣服批发,依此类推,直接匹配到字符串为止
代码: 1 public static bool Match(this string src,string pattern) 3 integer patternLen = pattern.Length; 4 integer srcLen = src.Length;6 whether (srcLen == 0   srcLen < patternLen) 8 return false;11 long patternHashCode = 0;12 long srcHashCode = 0;15 as (int i = 0; i < patternLen; i++)17 patternHashCode += pattern.GetHashCode();18 srcHashCode += src.GetHashCode();21 int j = 0;23 do25 if (patternHashCode == srcHashCode)27 return true;29 if (j + patternLen < srcLen)31 srcHashCode = srcHashCode - src[j].GetHashCode() + src[j + patternLen].GetHashCode();34 meantime (j++ < srcLen);36 return false;
下面我比较了一下该算法与IndexOf的性能,青岛办公家具,我读取一个将近12M的文本文件,分别用Match与IndexOf来匹配指定的字符串,碳分子筛,测试代码如下:
test code
测试结果,我直接截了一张图:
差距就不说了,上海婚纱摄影,IndexOf时间都耗在对字符串的索引访问的地方,当一个字符串非常长的时候,访问指定位置的索引就需要移动指针,电抗器,字符串越长,移动指针的次数据就越多,而且还是在一个循环当中,学摄影,这样性能差距就体现出来了.
repository http://repository.cnblogs.com Repository 谢文:SNS还在寒冬 云计算产业率先在中关村发力 三星Galaxy S II预购订单突破300万部 创业者和VC将迎来黄金年代 代码与建筑美、音乐美 正则表达式(五):浅谈两种匹配操作 风水树笔记之四:拖稿一年的开心网研究 技术人员如何建立个人品牌 更多知识库文章... China-pub 计算机图书网上专卖店!6.5万品种2-8折! China-Pub 计算机绝版图书按需印刷服务 字符串简单模式匹配算法与IndexOf方法比较 github.com... 03-31 21:29 03-31 09:49 03-21 13:56 03-09 11:19 03-09 10:33 递增操作符 递减操作符 Asp.net(13) Design Patterns silverlight(2) sql server(1) SubSonic(1) Windows(3) 2011年5月(1) 2011年4月(5) 2011年3月(3) 2011年1月(8) 2010年12月(6) 2010年11月(5) 2010年10月(5) 2010年8月(18) 2010年7月(1) 2010年3月(1) 2010年2月(1) 2009年11月(5) 2009年10月(1) 2009年9月(1) 2009年6月(1) 2009年2月(1) 2008年12月(9) Castle official website exception rule http://www.cnblogs.com/ttyp/ javascript javascript upload css disguise layer melody actor row apt column 1. Re:弃用数据库自增ID,三面翻,曝光一下我自己用到的解决方法之---终结篇 2. Re:弃用数据库自增ID,曝光一下我自己用到的解决方法之---终结篇 3. Re:弃用数据库自增ID,曝光一下我自己用到的解决方法之---终结篇 4. Re:EmitMapper与NLiteMapper在多接口继承下映射的问题 5. Re:NLiteMapper与EmitMapper性能简单比较 1. 弃用数据库自增ID,曝光一下我自己用到的解决方法(6253) 2. 弃用数据库自增ID,曝光一下我自己用到的解决方法之---终结篇(4640) 3. 我对Asp.net页面一系列执行过程的认识(1730) 4. 使用 SQL的for xml path来进行字符串拼接(1686) 5. c#编译器对byte类型的一些规则(1483) 1. 弃用数据库自增ID,曝光一下我自己用到的解决方法(123) 2. 弃用数据库自增ID,曝光一下我自己用到的解决方法之---终结篇(108) 3. 使用 SQL的for xml path来进行字符串拼接(25) 4. 体验SubSonic(13) 5. 我对Asp.net页面一系列执行过程的认识(11) 1. 体验SubSonic(1383) 2. 谈如何选书(1330) 3. NLiteMapper与EmitMapper性能简单比较(249) 4. 使用JavaScriptSerializer进行序列化日期类型应该注意的问题(112) 5. EmitMapper与NLiteMapper在多接口继承下映射的问题(58)
relative:

  
   转贴 金庸世界七大郁闷人物
  
   周记+GRAMMY
  
   专访《龙门》作者蝴蝶兰 《龙门》网游第一武侠大作
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线kb4eew1ai
发帖
10
C币
18
威望
1
贡献值
0
银元
0
铜钱
18
人人网人气币
0
只看该作者 沙发  发表于: 2011-07-16
Re:[我要举报]字符串简单模式匹配算法与IndexOf方法比较 - Repository - 博...
说的太好了 我同意这个
离线ednnga3wqj
发帖
2
C币
4
威望
0
贡献值
0
银元
0
铜钱
4
人人网人气币
0
只看该作者 板凳  发表于: 2011-07-16
Re:[我要举报]字符串简单模式匹配算法与IndexOf方法比较 - Repository - 博...
相当的不错哦!www.qudou5you.com www.taobao-ba.com
www.taobao-ba.com
www.qudou5y
离线kb4eew1ai
发帖
10
C币
18
威望
1
贡献值
0
银元
0
铜钱
18
人人网人气币
0
只看该作者 地板  发表于: 2011-07-21
Re:[我要举报]字符串简单模式匹配算法与IndexOf方法比较 - Repository - 博...

相当的不错哦!www.qudou5you.com www.taobao-ba.com