二十三:子串判断

Posted 玉汝于成

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二十三:子串判断相关的知识,希望对你有一定的参考价值。

问题 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 }

 

以上是关于二十三:子串判断的主要内容,如果未能解决你的问题,请参考以下文章

python学习第二十三章

MySQL数据库8(二十三)流程结构(if / while)

嵌入式Linux驱动学习之路(二十三)NAND FLASH驱动程序

编程技巧│提高 Javascript 代码效率的技巧

javaSE第二十三天

二十三种设计模式