• hdu2203KMP


    比较赤裸的KMP,将主串延长一倍即可达到旋转匹配的效果。

    /*
     * hdu2203/win.cpp
     * Created on: 2012-7-28
     * Author    : ben
     */
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <iostream>
    #include <queue>
    using namespace std;
    const int MAX_PAR_LEN = 100005;
    const int MAX_TXT_LEN = 200005;
    char pattern[MAX_PAR_LEN], text[MAX_TXT_LEN];
    int nextval[MAX_PAR_LEN], parlen, txtlen;
    void get_nextval() {
        int i = 0, j = -1;
        nextval[0] = -1;
        while (i < parlen) {
            if (j < 0 || pattern[i] == pattern[j]) {
                i++;
                j++;
                if (pattern[i] != pattern[j]) {
                    nextval[i] = j;
                } else {
                    nextval[i] = nextval[j];
                }
            } else {
                j = nextval[j];
            }
        }
    }
    int index_kmp() {
        int i, j;
        txtlen = strlen(text);
        parlen = strlen(pattern);
        get_nextval();
        i = j = 0;
        while (i < txtlen && j < parlen) {
            if (j < 0 || text[i] == pattern[j]) {
                i++;
                j++;
            } else {
                j = nextval[j];
            }
        }
        if (j == parlen) {
            return i - j;
        } else {
            return -1;
        }
    }
    
    int main() {
    #ifndef ONLINE_JUDGE
        freopen("data.in", "r", stdin);
    #endif
        while(scanf("%s%s", text, pattern) == 2) {
            int len = strlen(text);
            if((int)strlen(pattern) > len) {
                puts("no");
                continue;
            }
            memcpy(&text[len], text, len - 1);
            text[2 * len - 1] = 0;
            if(index_kmp() < 0) {
                puts("no");
            }else {
                puts("yes");
            }
        }
        return 0;
    }
  • 相关阅读:
    Numpy库
    使用Python的pandas-datareader包下载雅虎财经股价数据
    python引用库异常总结
    桌面常用快捷键
    第四章 数据的概括性度量
    第三章 数据的图表展示
    python连接MySql数据库
    如何利用scrapy新建爬虫项目
    幼儿教育
    PyMySQL和MySQLdb的区别
  • 原文地址:https://www.cnblogs.com/moonbay/p/2612689.html
Copyright © 2020-2023  润新知