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;
}