解题思路:使用KMP算法也可以过。
具体实现百度一大堆
注意事项:
参考代码:
#include <bits/stdc++.h> using namespace std; void get_next(char T[],int next[]){ int i,j; i = 0; j = 1; next[1] =0; while(j<T[0]){ /* 第一个元素*/ if(i == 0 ||T[i]==T[j]) { i++; j++; next[j] = i; } else i = next[i];//不相等 } } int Index_KMP(char s[],char T[]){ int next[1000]; int j = 1; int i = 1; get_next(T,next); while(i<=s[0] &&j<=T[0]){ if(j==0 || s[i] == T[j]){ i++; j++; } else j = next[j]; } if(j>T[0]) return i-T[0]; return 0; } int main () { char T[1000],S[1000]; int i,k; while(scanf("%s %s",S,T)!=EOF){ k = strlen(T); for(i = strlen(T);i>0;i--) T[i] = T[i-1]; T[0] = k; k = strlen(S); for(int i = strlen(S);i>0;i--) S[i] = S[i-1]; S[0] = k; printf("%d\n",Index_KMP(S,T)); } return 0; }
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题9.2 (Java代码)浏览:696 |
C语言训练-大、小写问题 (C语言代码)浏览:649 |
WU-图形输出 (C++代码)浏览:837 |
WU-复数求和 (C++代码)浏览:2120 |
字符逆序 (C语言代码)浏览:645 |
循环入门练习5 (C语言代码)浏览:908 |
格式化数据输出 (C语言代码)浏览:882 |
敲七 (C++代码)浏览:1119 |
简单的事情 (C语言代码)浏览:679 |
上车人数 (C语言代码)浏览:753 |