程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> KMP字符串模式匹配算法

KMP字符串模式匹配算法

編輯:C++入門知識

原理就不說了,學算法的都知道這基本上是查找一個字符串是否在另一個串中位置比較快的算法。代碼如下: [cpp]   #include <stdio.h>   #include <string.h>   #define MAXSIZE 100   int next[MAXSIZE];   int S_lenth,D_lenth;   char source[MAXSIZE],detination[100];   void get_next()   {       int i=1,j=0;       next[1]=0;       while(i<=D_lenth)       {           if(j==0||(detination[i-1]==detination[j-1]))           {               ++i;               ++j;               next[i]=j;           }           else           {               j=next[j];           }       }   }   int KMP()   {       int i=0,j=1;       while(i<=S_lenth&&j<=D_lenth)       {           if(j==0||(source[i]==detination[j-1]))           {               ++i;               ++j;           }           else           {               j = next[j];           }       }       if(j>D_lenth)       {           return i-D_lenth;       }       else           return 0;   }   int main()   {       int i=0;       printf("輸入源串!!!\n");       scanf("%s",&source);       printf("輸入模式串!!!\n");       scanf("%s",&detination);       S_lenth = strlen(source);       D_lenth = strlen(detination);       get_next();       printf("next數組元素為:\n");       for(i=1;i<=D_lenth;i++)       {           printf("%d ",next[i]);       }       printf("\n模式串開始於源串%d位置處",KMP());       return 0;   }      

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved