[YTU](2278)判断是否是子串(串) ---字符串匹配(串)
2278: 判断是否是子串(串)
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 30 Solved: 15
[Submit][Status][Web Board]
Description
设s、t为两个字符串,分别放在两个一维数组中,m、n分别为其长度,判断t是否为s的子串。如果是,输出子串所在位置(第一个字符),否则输出0。
Input
输入 长度m和n,字符串s和t
Output
子串所在的位置
Sample Input
5 3
adsff
dsf
Sample Output
2
AC代码:暴力匹配算法
#include<iostream> #include<cstring> using namespace std; int m,n; int violentMatch(char *s,char *p) { int i=0; int j=0; while(i<m && j<n) { if(s[i]==p[j]) { i++; j++; } else if(s[i]!=p[j]) { i=i-(j-1); j=0; } } if(j==n) return i-j+1; else return 0; } int main() { char s[100]; char p[100]; cin>>m>>n; for(int i=0;i<m;i++) cin>>s[i]; for(int i=0;i<n;i++) cin>>p[i]; int r=violentMatch(s,p); cout<<r<<endl; return 0; }