zoukankan      html  css  js  c++  java
  • hdu2203kmp匹配

    拼接字符串即可解决移位的问题;

    代码如下:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef unsigned int ui;
     4 typedef long long ll;
     5 typedef unsigned long long ull;
     6 #define pf printf
     7 #define mem(a,b) memset(a,b,sizeof(a))
     8 #define prime1 1e9+7
     9 #define prime2 1e9+9
    10 #define pi 3.14159265
    11 #define lson l,mid,rt<<1
    12 #define rson mid+1,r,rt<<1|1
    13 #define scand(x) scanf("%llf",&x) 
    14 #define f(i,a,b) for(int i=a;i<=b;i++)
    15 #define scan(a) scanf("%d",&a)
    16 #define dbg(args) cout<<#args<<":"<<args<<endl;
    17 #define inf 0x3f3f3f3f
    18 #define maxn 1000010
    19 int n,m,t;
    20 char s[maxn],p[maxn],nxt[maxn];
    21 void getnxt()
    22 {
    23     nxt[0]=-1;
    24     int i=-1,j=0;
    25     while(j<strlen(p))
    26     {
    27         if(i==-1||p[i]==p[j])
    28         {
    29             i++,j++;
    30             if(p[i]==p[j])nxt[j]=nxt[i];
    31             else nxt[j]=i;
    32         }
    33         else i=nxt[i];
    34      } 
    35 }
    36 void kmp()
    37 {
    38     int plen=strlen(p);
    39     int slen=strlen(s);
    40     int i=0,j=0;
    41     while(i<slen)
    42     {
    43         if(j==-1||s[i]==p[j])i++,j++;
    44         else j=nxt[j];
    45         if(j==plen)
    46         {
    47             pf("yes
    ");
    48             return;
    49         }
    50     }
    51     pf("no
    ");
    52 }
    53 int main()
    54 {
    55     //freopen("input.txt","r",stdin);
    56     //freopen("output.txt","w",stdout);
    57     std::ios::sync_with_stdio(false);
    58     while(scanf("%s %s",s,p)==2)
    59     {
    60         if(strlen(s)<strlen(p))pf("no
    ");
    61         else{
    62             int len=strlen(s);
    63             f(i,0,len-1)s[len+i]=s[i];//解除循环 
    64             getnxt();
    65             kmp();
    66         }
    67     }
    68  } 
  • 相关阅读:
    关于学习方法
    ES6的异步操作
    Promise对象的基本用法
    Generator函数(三)
    Generator函数(二)
    Generator函数(一)
    ES6 Set结构和Map结构(上)
    mybatis02--增删改查
    myBatis01
    监听器
  • 原文地址:https://www.cnblogs.com/randy-lo/p/12516750.html
Copyright © 2011-2022 走看看