• 解题:字符串匹配

    2016/12/04 Vinny Hu 7 评论

给你一个任意的字符串S,再给你一个任意的字符串S1,如果S包含S1输出 “YES”,否则输出“NO”。

但是拒绝使用暴力的匹配算法。你能不能想起其他更高效的算法?

样例如下:

输入一:

输出一:

输入二:

输出二:

【解题提示】:

  • 请在评论中先给出你的实现思路;
  • 然后贴出实现的代码;
  • 编程语言不限;
  • 评论支持代码高亮,请点击评论框菜单栏上的  按钮;
  • 使用KMP算法,或者使用后缀数组;
1 收藏


直接登录
最新评论
  • happy time   02/13

    定义两个字符数组

    char ch[100],chh[50];

    for(int i=0;ch[i]!=’\0′;i++)

    {

    for(int j=0;chh[j]!=’\0′;j++)

    if(chh[i]==ch[j])…

    }

  • 彗星袭月 学生 02/15

    #include<iostream>
    #include<cstring>
    using namespace std;
    int main()
    {
    char s1[100];
    char s2[100];
    while(cin>>s1&&cin>>s2)
    {
    if(strstr(s1,s2))
    cout<<“yes\n”;
    else
    cout<<“no\n” ;
    }
    }

  • 枫語   03/15

    String str1 = “suanfaaihaozhe”;
    String str2 = “suanfa”;
    System.out.println(str1.indexOf(str2)>-1?”yes”:”no”);

  • jun   03/15

    可以使用js对象,首先遍历一边字符串,取出子串的长度,组成一个json对象,然后一次查找,复杂度为n

  • 琛力   03/16

    Python直接find,完事。

  • thyt 学生 03/17

    大概是KMP算法?