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         }
C#

使用:

            string source = "我是中和敏式的服务二是到覅维尔维尔34山东富翁234斯蒂芬234234式的服务二";
            string subString = "山东富翁";

            int a = BoyerMooreSearch(source, subString);

            Console.WriteLine(a);


如大家发现实现有什么问题,欢迎指正。

原文地址:https://www.cnblogs.com/rainnight/p/3467371.html