二十三:子串判断

问题 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
",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++]!='');
24     while(str2[j++]!='');
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 }
原文地址:https://www.cnblogs.com/yuming226/p/8150884.html