BoyerMoore(BM)算法--C#
因项目需要使用字符串查询算法,在网上搜搜了半天,没有找到C#版的。
索性根据BM机制,用C#实现了一遍。现在贴出了,以备忘记。
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 }
使用:
string source = "我是中和敏式的服务二是到覅维尔维尔34山东富翁234斯蒂芬234234式的服务二"; string subString = "山东富翁"; int a = BoyerMooreSearch(source, subString); Console.WriteLine(a);
如大家发现实现有什么问题,欢迎指正。