李华认亲

                         1970: 李华认亲  
                 时间限制: 1 Sec 内存限制: 128 MB
题目描述: 
  李华说小名是他的小名
  
  来自莫尔塔星云的小名为了寻找他的祖先们而在宇宙中四处游荡,他在宇宙中游荡了几亿年,早就忘记了祖先们的各种特征,只能凭借着他们独有的编码串——一串由大写字母组成的字符串来识别血缘。
  现在小名找到了一个带有编码串的生物,但是因为编码串太长,需要很长时间的比对而让小名头疼不已。
  请你编写一种程序,帮助小名快速识别该生物是不是小名的祖先
  已知小名的编码串str1和该生物的编码str2串长度均小于1000,且小名的编码串长度不大于祖先。如果该生物的编码串str2包含小名编码串str1所有编码符(不考虑编码顺序),则认为该生物为小名的祖先。
  测试数据有多组。

输入:
  先输入一个整数,表示有多少组测试数据
  然后输入小名的编码串str1和生物的编码串str2

输出:
  如果该生物是小明的祖先输出“Yes”,
  否则输出“No”

样例输入:

2
ABCADB
ABBCADBA
AAAAABBBBB
ABABABABAAC

样例输出:

Yes
No

题目分析:
  两个由大写字母组成的字符串str1和str2,长度都小于1000。如果str1里面有的str2都有,则输出Yes,否则输出No。
坑点分析:
  题目中说str2包含str1则证明是小名的祖先,此处大家容易把包含理解为字符种类的包含而忽略数量的包含。
代码示例:
方法有很多,此处只举例一种

#include<stdio.h>
#include<string.h>
int main()
{
    int i,j,a,b,N,k;
    char str1[1001],str2[1001];
    scanf("%d",&N);
    while(N--)
    {
        k=0;
        scanf("%s %s",str1,str2);
        a=strlen(str1);
        b=strlen(str2);
        for(i=0;i<b;i++)
        {
            for(j=k;j<a;j++)
            {
                if(str2[i]==str1[j])
                {
                    str2[i]='0';
                    k++;
                    break;
                }
            }
            if(k==a)       //str1遍历结束且符合题意
            {
                printf("Yes\n");
                break;
            }
        }
        if(k!=a) printf("No\n");
    }
    return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值