BoyerMoore(BM)算法--C#
因项目需要使用字符串查询算法,在网上搜搜了半天,没有找到C#版的。
索性根据BM机制,用C#实现了一遍。现在贴出了,以备忘记。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 /// <summary> 2 /// BM算法 3 /// </summary> 4 /// <param name="source"></param> 5 /// <param name="subString"></param> 6 /// <returns></returns> 7 static int BoyerMooreSearch(string source, string subString) 8 { 9 if(string.IsNullOrWhiteSpace(source) || string.IsNullOrWhiteSpace(subString)) 10 return - 1; 11 int i = 0, j, sLen = subString.Length; 12 while (i < sLen) 13 { 14 j = 0; 15 while (j < sLen && source[i] == subString[j]) 16 { 17 i++; 18 j++; 19 } 20 if (j == sLen) 21 { 22 return i - sLen; 23 } 24 i = i - j + 1; 25 } 26 return -1; 27 }
使用:
1 2 3 4 5 6 | string source = "我是中和敏式的服务二是到覅维尔维尔34山东富翁234斯蒂芬234234式的服务二" ; string subString = "山东富翁" ; int a = BoyerMooreSearch(source, subString); Console.WriteLine(a); |
如大家发现实现有什么问题,欢迎指正。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步