一. 朴素的模式匹配算法

 

  1. /*************************************************************************************/ 
  2. /*返回子串T在主串S中的第pos个字符后的位置(包括该字符位置)。若不存在,则函数返回值为0。                                                                      */ 
  3. /*************************************************************************************/ 
  4.  
  5. int Index(string S,string T, int pos)  
  6. {  
  7.     int slen = S.length();  
  8.     int tlen = T.length();  
  9.     //判断非法情况  
  10.     if (pos+tlen-1>slen)  
  11.     {  
  12.         return 0;  
  13.     }  
  14.  
  15.     //循环变量i,j,k都表示的是位序,而不是字符串的索引。  
  16.     for(int i=pos;i<=slen-tlen+1;i++)  
  17.     {  
  18.         int k=i;  
  19.         int j;  
  20.         for (j=1;j<=tlen;j++)  
  21.         {  
  22.             if(S[k-1]==T[j-1])  
  23.             {  
  24.                 k++;  
  25.                 continue;  
  26.             }  
  27.             else 
  28.             {  
  29.                 break;  
  30.             }  
  31.         }  
  32.         if (j==tlen+1)  
  33.         {  
  34.             return i;  
  35.         }  
  36.     }  
  37.     return 0;