CSU 1598 最长公共前缀
2015-08-13 09:12
204 查看
1598: 最长公共前缀
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 73 Solved: 62
[Submit][Status][Web
Board]
Description
给定两个字符串s和t,现有一个扫描器,从s的最左边开始向右扫描,每次扫描到一个t就把这一段删除,输出能发现t的个数。
Input
第一行包含一个整数T(T<=50),表示数据组数。每组数据第一行包含一个字符串s,第二行一个字符串t,字符串长度不超过1000000。
Output
对于每组数据,输出答案。
Sample Input
2 ababab ab ababab ba
Sample Output
3 2
HINT
Source
国防科学技术大学第十八届银河之光文化节ACM程序设计竞赛初赛[Submit][Status][Web
Board]
和HDU 1686 Oulipo那道题几乎一样,稍微改了改就一次过了,这道题是学校OJ上的题,没学KMP之前,看到字符串的长度后.很难做出来。现在就已经可以一次过了,我想这便是成长。Fighting!
#include <stdio.h> #include <string.h> #define N 1000005 char t ,w ; int nxt ; int n,m; void getnext(){ int j, k; j = 0; k = -1; nxt[0] = -1; while(j<m){ if (k==-1 || w[j]==w[k]){ nxt[++j] = ++k; } else{ k = nxt[k]; } } } int kmp(){ getnext(); int ans=0; int j, k; j = 0; k = 0; while(j<n){ if (k==-1 || w[k]==t[j]){ ++k;++j; } else{ k = nxt[k]; } if(k==m) { k=nxt[k]; ans++; } } return ans; } int main() { int c; scanf("%d",&c); while(c--) { scanf("%s%s",t,w); n=strlen(t); m=strlen(w); printf("%d\n",kmp()); } return 0; }
相关文章推荐
- 大数据可以像股票一样交易了,贵阳、武汉先尝鲜
- Fixed Point Float Intro - Q (number format)
- 九月十月百度,迅雷,华为,阿里巴巴笔试面试六十题(第411~470题)
- Give Developers Autonomy
- onSaveInstanceState和onRestoreInstanceState触发的时机
- 让eclipse validating变快
- MTU 最大传输单位
- E - Argus
- libc、glibc和glib的关系
- 拆分又遇变数,传赛门铁克或将出售VERITAS,这又是挖的什么坑?
- MTU 最大传输单位
- HTTP 错误 503.2 - Service Unavailable 正在超过 serverRuntime@appConcurrentRequestLimit 设置的值。
- Factorial
- Manacher算法(来自戴神的博客)
- 用http 中doGet 方法获取mysql 数据库数据的错误总结
- 技术为王、猿实践必要的武器计划
- ProgressDialog(四)——更改系统自带ProgressDialog文字大小
- 架构师速成8.4-分库分表的关键点
- 个人网盘倒下去 企业网盘顶起来
- 个人网盘倒下去 企业网盘顶起来