问题 B: 子串判断
题目描述
写一段程序用来判断一个字符串是否出现在另一个字符串中
输入
两个字符串(字符串最大长度为100)
输出
yes或no
样例输入
abab
fababkr
样例输出
yes
方法一:
1 #include<stdio.h> 2 void fun(char str1[],char str2[],int n,int m){ 3 int i,j,l; 4 for(j=0;j<m-1;j++){ 5 i=0; 6 if(str1[i]==str2[j]){ 7 int k=j; 8 while(str1[++i]==str2[++k]&&i<n-1){ 9 printf("i=%d\n",i); 10 } 11 } 12 if(i==n-1){ 13 printf("yes"); 14 return; 15 } 16 } 17 printf("no"); 18 } 19 int main(){ 20 char str1[100],str2[100]; 21 scanf("%s%s",str1,str2); 22 int i=0,j=0; 23 while(str1[i++]!=‘\0‘); 24 while(str2[j++]!=‘\0‘); 25 if(i<j){ 26 fun(str1,str2,i,j); 27 }else{ 28 fun(str2,str2,j,i); 29 } 30 return 0; 31 }
方法二:
1 #include<stdio.h> 2 #include<string.h> 3 void fun(char str1[],char str2[]){ 4 int k=0; 5 int i; 6 for(i=0;i<strlen(str1);i++){ 7 if(str1[i]==str2[k]){ 8 k++; 9 }else{ 10 k=0; 11 } 12 if(k==strlen(str2)){ 13 printf("yes"); 14 return; 15 } 16 } 17 printf("no"); 18 return; 19 } 20 int main(){ 21 char str1[100],str2[100]; 22 scanf("%s%s",str1,str2); 23 if(strlen(str1)>strlen(str2)){ 24 fun(str1,str2); 25 }else{ 26 fun(str2,str1); 27 } 28 return 0; 29 }