C语言指针判断是否为子串问题
有一种加密方法:对于给定的一条信息s,把s看作一个字符串,然后随机产生一些字符串,把这些字符串插入到s的某些字符之间,这样处理后可以得到密文t。现在不考虑如何产生字符串,...
有一种加密方法:对于给定的一条信息s,把s看作一个字符串,然后随机产生一些字符串,把这些字符串插入到s的某些字符之间,
这样处理后可以得到密文t。现在不考虑如何产生字符串,也不考虑如何把字符串插入到明文中。
给定两个字符串s和t,请判定s是否为t的明文。
其实这个问题就是考虑s是否为t的子串。
这里字串的定义:把t里面的某些字符删除后,剩下的字符串恰好是s,则s就是t的子串。
输入
输入包括多组测试数据。每组测试数据一行,该行为由空格分开的两个字符串s和t。s和t中的字符都是英文字母。s与t的长度均不超过200。
输出
对每组测试数据,如果s是t的子串,在单独的一行中输出"Yes", 否则在单独的一行中输出"No"。
输入样列
sequence subsequence
person compression
VERDI vivaVittorioEmanueleReDiItalia
caseDoesMatter CaseDoesMatter
输出样例
Yes
No
Yes
No 展开
这样处理后可以得到密文t。现在不考虑如何产生字符串,也不考虑如何把字符串插入到明文中。
给定两个字符串s和t,请判定s是否为t的明文。
其实这个问题就是考虑s是否为t的子串。
这里字串的定义:把t里面的某些字符删除后,剩下的字符串恰好是s,则s就是t的子串。
输入
输入包括多组测试数据。每组测试数据一行,该行为由空格分开的两个字符串s和t。s和t中的字符都是英文字母。s与t的长度均不超过200。
输出
对每组测试数据,如果s是t的子串,在单独的一行中输出"Yes", 否则在单独的一行中输出"No"。
输入样列
sequence subsequence
person compression
VERDI vivaVittorioEmanueleReDiItalia
caseDoesMatter CaseDoesMatter
输出样例
Yes
No
Yes
No 展开
1个回答
展开全部
#include <stdio.h>
int func(char *s1,char *s2)
{
char *p=s2;
for(;*s1;s1++)
{
for(;*p;p++)
{
if(*p==*s1)
{
break;
}
}
if(*p=='\0')
{
return 0;
}
p++;
}
return 1;
}
int main(void)
{
char s1[100],s2[100];
while(scanf("%s%s",s1,s2)==2)
{
if(func(s1,s2))
{
puts("Yes");
}
else
{
puts("No");
}
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询