字符串匹配在实际的开发过程中用的很多,比如大多数人喜欢ctrl+f的快捷的,无论是在代码里面还是在文本里面
下面我们一起介绍一种简单的字符串匹配方法,这也是我们大多数人容易想到的算法。
算法过程如下:
比如我们再字符串A中查找是否有子串B
1.首先获取A和B的长度,len1与len2,同时用两个指针或者索引p1和p2分别指向A和B的第一个字符
2当A[p1]与B[p2]相等则 p1和p2向后移动一个字符的位置
3.当A[p1]!=B[p2]的时候,p1向后移动一个位置,p2指向待B的第一个字符串
4.重复步骤2,3直到匹配到p2的最后一个字符,则说明匹配成功。
5.匹配不成功的条件是当A中剩余元素的数目小于B中未匹配的元素的总数,则匹配不成功
代码实现如下:
1 #include <iostream> 2 using namespace std; 3 4 bool StringFun(char* OrginStr,char* TargetStr) 5 { 6 int i,j; 7 i=0; 8 j=0; 9 int len1=strlen(OrginStr); 10 int len2=strlen(TargetStr); 11 if(len2>len1) 12 return false; 14 while((len2-j)<(len1-i)) 15 { 16 if(OrginStr[i]==TargetStr[j]) 17 { 18 i++; 19 j++; 20 } 21 else 22 { 23 i++; 24 j=0; 25 } 26 27 if(j==(len2)) 28 { 29 return true; 30 } 31 } 32 33 return false; 34 } 35 36 37 void main() 38 { 39 char *StrOrgin,*StrTarget; 40 StrOrgin=new char[50]; 41 StrTarget=new char[50]; 42 while(1) 43 { 44 memset(StrOrgin,'