zoukankan      html  css  js  c++  java
  • 简单字符串匹配方法

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

    运行截图:

  • 相关阅读:
    winform中利用正则表达式得到有效的电话/手机号
    winform运行时如何接受参数?(示例)
    [基础]Javascript中的继承示例代码
    [转]C#中"is" vs "as"
    Javascript数组常用方法[包含MS AJAX.NET的prototype扩展方法]示例
    linq学习笔记(一)
    用winform应用程序登录网站的解决方案
    [转贴]操纵自如--页面内的配合与通信
    .net3.0中的扩展方法(示例)
    window.location或window.open如何指定target?
  • 原文地址:https://www.cnblogs.com/vpoet/p/4673076.html
Copyright © 2011-2022 走看看