简单字符串匹配方法

字符串匹配在实际的开发过程中用的很多,比如大多数人喜欢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,'',50);
45         memset(StrTarget,'',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 }

运行截图:

原文地址:https://www.cnblogs.com/vpoet/p/4673076.html