美文网首页
kmp算法的bug free版本

kmp算法的bug free版本

作者: 芥川世之介 | 来源:发表于2019-10-30 23:39 被阅读0次
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include<vector>
    #include<string>
    #include<sstream>
    using namespace std;
    int n, num, Next[1001001];
    
    int main()
    {
        string s, t;
        getline(cin, t);
        cin >> s;
        int m = s.length();
        memset(Next, 0, sizeof(Next));
        int now = Next[0] = -1;
        for (int i = 1; i < m; i++)
        {
            while (now >= 0 && s[now + 1] != s[i]) now = Next[now];
            if (s[now + 1] == s[i]) now++;
            Next[i] = now;
        }
        int n = t.length();
        now = -1;
        int flag = 1;
        for (int i = 0; i < n; i++)
        {
            while (now >= 0 && s[now + 1] != t[i]) now = Next[now];
            if (s[now + 1] == t[i]) now++;
            if (now == m - 1)
            {
                flag = 0;
                cout << i - m + 1 << " ";
                now = Next[now];
            }
        }
        if (flag == 1)
            cout << "false";
    }
    

    相关文章

      网友评论

          本文标题:kmp算法的bug free版本

          本文链接:https://www.haomeiwen.com/subject/mstzvctx.html