简单字符串匹配方法
字符串匹配在实际的开发过程中用的很多,比如大多数人喜欢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,'\0',50); 45 memset(StrTarget,'\0',50); 46 cout<<"Please input the Origin Str: "; 47 cin>>StrOrgin; 48 cout<<"Please input the Targe Str: "; 49 cin>>StrTarget; 50 bool flag; 51 flag=StringFun(StrOrgin,StrTarget); 52 if(flag) 53 { 54 cout<<"Find The Child String "<<StrTarget<<endl; 55 } 56 else 57 { 58 cout<<"Can not Find The Child String "<<StrTarget<<endl; 59 } 60 } 61 62 63 delete[] StrOrgin; 64 StrOrgin=NULL; 65 delete[] StrTarget; 66 StrTarget=NULL; 67 return; 68 }
运行截图:
作者:vpoet
出处:http://www.cnblogs.com/vpoet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/vpoet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。