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);

 

 


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

 

 

你可能感兴趣的:(C#)