当前位置:首页 » 编程语言 » c语言一个字符串是另一个子集
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言一个字符串是另一个子集

发布时间: 2023-03-11 07:00:01

‘壹’ 用c语言判断一个字符串是否是另一个字符串的子串 不是返回0 是返回这个子串在另一字符串中位置

#include"stdio.h"
#include<string.h>
intf(char*a,char*b){
char*p=strstr(a,b);
returnp?p-a:-1;
}
intmain(intargv,char*argc[]){//验证主函数
char*a="1234567890",*b="4567";
(x=f(a,b))>=0?printf("%d ",x):printf("Nooverlap... ");
//printf("%d ",strcspn(a,b));//这是调用库函数直接求得
return0;
}

运行结果:

‘贰’ 在C语言中怎样判断一个字符串中是否包含另一个字符串

如果“一个字符串”全部是英文字符的话,只要开一个chars[128];的哈希表,每个在其中出现的字符按它的ASCII值,将相应的元素置为1;

然后扫描“另一个字符串”,检测每一个字符,在数组中对应元素的值是否为1。若这个串里的对应元素值全部为1,则是“包含另一个字符串所有的字符”。

这个算法的时间复杂度为O(n1+n2),n1和n2是二个字符串的长度。


#iclude<stdio.h>

int main()

{char s1[200],s2[200],s[128]={0};//初始化,所有字符均未出现

int i,k=1;

gets(s1);

gets(s2);

for(i=0;s[i];i++)

s1[s[i]]=1;//将字符串s1中出现的每一个字符,均“记录在案”

for(i=0;s2[i];i++)

if(!(s[s2[i]]))k=0;//若s2中有字符在“记录簿”中未出现,就作记录

if(k)printf("s1包含了s2中的全部字符 ");//根据是否有记录输出相应记录

elseprintf("s1未包含s2中的全部字符 ");

return 0;

}

‘叁’ C语言中怎么判断一个字符串包含在另一个字符串里面

#include<stdio.h>
#include<string.h>
intmain()
{
intflag;
chara[30]="iamtired";
charb[100];

scanf("%s",b);

if(strstr(b,a))
flag=1;
else
flag=0;

printf("flag=%d ",flag);
return0;
}

‘肆’ C语言程序,判断一个字符串是否是另一个字符串的子串,如是则输出第一次出现的位置

#include<stdio.h>
#include<string.h>
intiszstr(char*str,char*zstr);//zstr是str的子串返回出现的位置下标,否则返回-1
intmain()
{
intrenum;
charstr[100],zstr[100];
while(1)
{
str[0]=zstr[0]=0;
printf("输入母串:");
scanf("%s",str);
printf("输入可能的子串:");
scanf("%s",zstr);
renum=iszstr(str,zstr);
if(renum<0)
printf("不是子串! ");
else
printf("是子串,起始位置在下标%d处! ",renum);
}

return0;
}
intiszstr(char*str,char*zstr)
{
char*p1=str,*p2=NULL,*pSave=NULL,flag;
while(*p1)
{
if(*p1==zstr[0]&&strlen(p1)>=strlen(zstr))//先找到对应的首字符位置
{
pSave=p1;
p2=&zstr[0];
flag=1;
while(*p2)
{
if(*p1!=*p2)
{
flag=0;
break;
}
p1++;
p2++;
}
if(flag==1)
{
returnpSave-&str[0];
}
else
p1=pSave;
}
p1++;
}
return-1;
}

‘伍’ C语言中判断一个字符串是否为另一字符串的子串

你的if语句后面再加个if语句判断f是否等于1,等于1就不用循环了。你没判断,后面的字符又把你的1改回0了。修改后代码如下

#include<stdio.h>
#include<string.h>
main(){
chara[100],b[100];
inti,j,f=0;
gets(a);//cde
gets(b);//aabbcdefghbcd
for(i=0;i<strlen(b);i++){
if(b[i]==a[0]){
for(j=1;j<strlen(a);j++){
if(a[j]==b[i+j]){
f=1;
continue;
}else{
f=0;
break;
}
}
}
if(f==1){
break;
}
}
if(f==1)
printf("YES");
else
printf("NO");
}

使用库函数strstr

#include<stdio.h>
#include<string.h>
main(){
chara[100],b[100];
gets(a);
gets(b);
if(strstr(b,a)!=NULL){//第2个参数第1个参数的子串
printf("YES");
}else{
printf("NO");
}
}

‘陆’ C语言判断一个字符串是否是另一个字符串的子串

1、首先,定义两个整型变量,保存判断的数和同构串计数。