• 简单字符串匹配方法


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

    运行截图:

  • 相关阅读:
    虹软人脸识别在 linux中so文件加载不到的问题
    tomcat 控制台乱码问题
    sourceTree git 空目录从远程仓库克隆代码出现warning: templates not found
    springboot项目更改代码后实时刷新问题
    spring 3.0 整合redis
    随笔
    Centos 7 安装 FFmpeg
    Postgresql 查看当前数据库所有的触发器
    oracle只导出触发器
    oracle 批量删除触发器
  • 原文地址:https://www.cnblogs.com/vpoet/p/4673076.html
Copyright © 2020-2023  润新知