总时间限制:
1000ms
内存限制:
65536kB
描述
输入两个字符串,验证其中一个串是否为另一个串的子串。
输入
输入两个字符串, 每个字符串占一行,长度不超过200且不含空格。
输出
若第一个串s1是第二个串s2的子串,则输出(s1) is substring of (s2)
否则,若第二个串s2是第一个串s1的子串,输出(s2) is substring of (s1)
否则,输出 No substring。样例输入
abc dddncabca样例输出
abc is substring of dddncabca
关键代码
方法一:
#include<stdio.h>
#include<string.h>
int main()
{
char s1[200],s2[200];
int k,m,a = 0,b = 0;
gets(s1);
gets(s2);
if(strlen(s1)<=strlen(s2))
{
if(strstr(s2,s1))
{
printf("%s is substring of %s",s1,s2);
return 0;
}
}
else if(strlen(s1)>=strlen(s2))
{
if(strstr(s1,s2))
{
printf("%s is substring of %s",s2,s1);
return 0;
}
}
printf("No substring");
return 0;
}
方法二:
#include<stdio.h>
#include<string.h>
int main()
{
char s1[200],s2[200];
int k,m,a = 0,b = 0;
gets(s1);
gets(s2);
for(int i = 0;i<strlen(s2);i++)
{
k = 0;
m = i;
if(s1[k] == s2[m])
{
while(s1[k] == s2[m]&&s1[k] != '\0')
{
k++;
m++;
}
if(s1[k] == '\0')
{
a = 1;
}
}
}
for(int i = 0;i<strlen(s1);i++)
{
k = 0;
m = i;
if(s2[k] == s1[m])
{
while(s2[k] == s1[m]&&s2[k] != '\0')
{
k++;
m++;
}
if(s2[k] == '\0')
{
b = 1;
}
}
}
if(a == 1)
printf("%s is substring of %s",s1,s2);
else if(b == 1)
printf("%s is substring of %s",s2,s1);
else
printf("No substring");
return 0;
}