#include <iostream> #include <stdio.h> #include <algorithm> #include <cstring> using namespace std; const int maxn = 1001; char s[maxn], p[maxn]; int Next[maxn]; void cal_next(int len) { for (int i = 1; i < len; i++) { int j = Next[i - 1]; while (j > 0 && p[j] != p[i]) j = Next[j - 1]; if (p[i] == p[j]) Next[i] = j + 1; else Next[i] = 0; } } void KMP(int len1, int len2) { int i = 0, j = 0; while (i < len1) { if (s[i] == p[j]) { if (j == len2 - 1) { cout << i - len2 + 2 << endl; return; } i++; j++; } else { if (j == 0) i++; else j = Next[j - 1]; } } cout << "0" << endl; } int main() { while (cin >> s >> p) { int len1 = strlen(s); int len2 = strlen(p); cal_next(len2); KMP(len1, len2); } return 0; }
0.0分
0 人评分
C语言训练-排序问题<2> (C++代码)(sort函数)浏览:1580 |
不容易系列2 (C语言代码)浏览:597 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:512 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:586 |
WU-整数平均值 (C++代码)浏览:1244 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:886 |
【求[X,Y]内被除3余1并且被除5余3的整数的和】 (C语言代码)浏览:674 |
蛇行矩阵 (C语言代码)浏览:536 |
母牛的故事 (C语言代码)浏览:551 |
a+b浏览:433 |