编写判断子串的自定义函数模块int substr(char *s1,char *s2),如果s1是s2的子串,

编写判断子串的自定义函数模块intsubstr(char*s1,char*s2),如果s1是s2的子串,则返回值为1,否则为0;利用判断子串函数实现密码安全输入... 编写判断子串的自定义函数模块intsubstr(char *s1,char *s2),如果s1是s2的子串,则返回值为1,否则为0;利用判断子串函数实现密码安全输入 展开
 我来答
haughty88
推荐于2018-04-20 · 超过22用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:46.6万
展开全部
#include <iostream.h>

#include <string.h>

#include<stdlib.h>

int substr(char *s1,char *s2)

{

 int len1=strlen(s1);

 int len2=strlen(s2);

 int i,k,t=0;

 if(len1>len2)

  return 0;

 for(k=0;k<len2;k++)

 {

  for(i=0;i<len1;i++)

   if(s1[i]==s2[i])

    t++;

  if(t==len1)

   return 1;

  s2++;

 }

 return 0;

}

void main()

{

 char *str1=NULL,*str2=NULL;

 char y;

 do

 {

  str1 = (char *)calloc(50, sizeof(char));

  str2 = (char *)calloc(50, sizeof(char));

  cout<<"请输入两个字符串:"<<endl;

 

  cin>>str1;

  cin>>str2;

  if(substr(str1,str2)==1)

   cout<<str1<<"是"<<str2<<"的子串"<<endl;

  else 

   cout<<str1<<"不是"<<str2<<"的子串"<<endl;

  cout<<"如需继续判断请按Y或者y:";

  cin>>y;

  free(str1);

  free(str2);

 }while(y=='Y'||y=='y');

}
时间复杂度不是最优化的,我记得数据库里有经典的KMP算法。你可以参考。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式