九度oj-1094-String Matching
2015-11-17 18:25
344 查看
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:1263
解决:689
题目描述:
Finding all occurrences of a pattern in a text is a problem that arises frequently in text-editing programs.
Typically,the text is a document being edited,and the pattern searched for is a particular word supplied by the user.
We assume that the text is an array T[1..n] of length n and that the pattern is an array P[1..m] of length m<=n.We further assume that the elements of P and T are all alphabets(∑={a,b...,z}).The character arrays P and T are often called strings of characters.
We say that pattern P occurs with shift s in the text T if 0<=s<=n and T[s+1..s+m] = P[1..m](that is if T[s+j]=P[j],for 1<=j<=m).
If P occurs with shift s in T,then we call s a valid shift;otherwise,we calls a invalid shift.
Your task is to calculate the number of vald shifts for the given text T and p attern P.
输入:
For each case, there are two strings T and P on a line,separated by a single space.You may assume both the length of T and P will not exceed 10^6.
输出:
You should output a number on a separate line,which indicates the number of valid shifts for the given text T and pattern P.
样例输入:
样例输出:
来源:2006年上海交通大学计算机研究生机试真题
内存限制:32 兆
特殊判题:否
提交:1263
解决:689
题目描述:
Finding all occurrences of a pattern in a text is a problem that arises frequently in text-editing programs.
Typically,the text is a document being edited,and the pattern searched for is a particular word supplied by the user.
We assume that the text is an array T[1..n] of length n and that the pattern is an array P[1..m] of length m<=n.We further assume that the elements of P and T are all alphabets(∑={a,b...,z}).The character arrays P and T are often called strings of characters.
We say that pattern P occurs with shift s in the text T if 0<=s<=n and T[s+1..s+m] = P[1..m](that is if T[s+j]=P[j],for 1<=j<=m).
If P occurs with shift s in T,then we call s a valid shift;otherwise,we calls a invalid shift.
Your task is to calculate the number of vald shifts for the given text T and p attern P.
输入:
For each case, there are two strings T and P on a line,separated by a single space.You may assume both the length of T and P will not exceed 10^6.
输出:
You should output a number on a separate line,which indicates the number of valid shifts for the given text T and pattern P.
样例输入:
abababab abab
样例输出:
3
来源:2006年上海交通大学计算机研究生机试真题
#include<stdio.h> #include<string.h> char a[1000005],b[1000005]; int main() { int na,nb,i,j; while(scanf("%s%s",a,b)!=EOF) { int count=0; na=strlen(a); nb=strlen(b); for(i=0;i<=na-nb;i++) { for(j=0;j<nb;j++) if(a[i+j]!=b[j]) break; if(j==nb) count++; } printf("%d\n",count); } return 0; }
相关文章推荐
- 九度1526
- 九度1025:最大报销额 java
- 九度 题目1026:又一版 A+B java
- 【九度】题目1006:ZOJ问题
- 【九度】题目1005:Graduate Admission
- 【九度】题目1004:Median
- 【九度】题目1003:A+B
- 【九度】题目1002:Grading
- 【九度】题目1001:A+B for Matrices
- 【九度】题目1000:计算a+b
- 三、Hash练习_1156_1
- 三、Hash_1081_1
- 给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。
- 并查集
- JOBDU Q1001
- JOBDU Q1002
- JOBDU Q1003
- JOBDU Q1004
- 九度题目1431解
- 九度--第1001题:A+B for Matrices