codevs 1204寻找子串位置(kmp算法)
来源:互联网 发布:大数据4v 编辑:程序博客网 时间:2024/05/29 20:01
题目链接:http://codevs.cn/problem/1204/
代码:
#include <bits/stdc++.h>using namespace std;const int maxn=105;char a[maxn],b[maxn];int nextt[maxn];int n,m;void getnext(char str[maxn], int nextt[maxn]) { int j = 0, k = -1; nextt[0] = -1; while (j < m) { if (k == -1 || str[j] == str[k]) { j++; k++; nextt[j] = k; } else k = nextt[k]; }}void kmp(char a[maxn], char b[maxn]) { int nextt[maxn]; int i = 0, j = 0; getnext(b, nextt); while (i < n) { if (j == -1 || a[i] == b[j]) { // 母串不动,子串移动 j++; i++; } else { // i不需要回溯了 // i = i - j + 1; j = nextt[j]; } if (j == m) { printf("%d\n", i - m + 1); // 母串的位置减去子串的长度+1 return; } } printf("-1\n");} int main(){while(cin>>a>>b){n=strlen(a);m=strlen(b);kmp(a,b);}return 0;}
阅读全文
0 0
- codevs 1204寻找子串位置(kmp算法)
- CODEVS 1204 寻找子串位置
- 【codevs】[1204]寻找子串位置
- codevs 1204 寻找子串位置
- 【codevs 1204】寻找子串位置
- 【codevs】1204 寻找子串位置
- 【codevs】1204 寻找子串位置(KMP模板,比模板还模板)
- 在大字符串寻找共出现几次子串的位置(KMP算法C写法)
- 1204 寻找子串位置
- 1204 寻找子串位置
- 【KMP】codevs1204——寻找子串位置
- KMP——CODEVS1204 寻找子串位置
- 寻找子串位置
- 寻找子串位置
- 寻找子串位置
- WikiOI 1204 寻找子串位置
- [1204 寻找子串位置] 解题报告
- [wikioi]1204 寻找子串位置
- 熟悉你所不熟悉的JDK JVM
- angular 添加 查询
- Putty连接虚拟机
- 编程输出如下图像。
- PingCAP 分布式数据库TiDB介绍
- codevs 1204寻找子串位置(kmp算法)
- RMQ问题——ST算法
- 内存溢出与内存泄漏
- AngularJS的添加和区间的判断(过滤器)
- L7 环境变量PATH,cp和mv命令,文档查看cat more less head tail
- 洛谷P2678 跳石头(NOIp2015)
- 编译与链接详解
- Calculator
- 再来谈谈vue.js