让你一生残梦的博客

初衷:为了以后的查找资料方法,模板而写

旧键盘

旧键盘

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出

肯定坏掉的那些键。

输入描述:

输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括大、小写)、数字0-9、

以及下划线“_”(代表空格)组成。题目保证2个字符串均非空。

输出描述:

按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有1个坏键。

输入例子:

7_This_is_a_test

_hs_s_a_es

输出例子:

7TI

思路:

           在后面的字符创比较用完之前,每一个字符需要去与前面的一个字符串比较,不一样就从而记录下来!在后面的字符串用完了以后,其余的就不需要去比较了,直接全给记录 下来就可以了。 最后输出就是用一个大的整型数组把输出过的一些字母,全部存起来。每一次你想要输出什么,只要你没有被标记过就可以输出,不然就不要输出。

代码如下:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;

int main()
{
   char answer[100],answer1[100];
   int s[130];
   int score=0,i;
   gets(answer);
   gets(answer1);
   char a[100];
   int sum=0;
   int sum1=0;
   memset(s,0,sizeof(s));
   for(i=0;i<strlen(answer);i++)
   {
    if(sum<strlen(answer1))
    {
     if(answer1[sum]==answer[i]) //一样的去掉,其余的存起来就可以了。
       sum++;
     else
       a[score++]=answer[i];   
     }
     else
        a[score++]=answer[i];
   }
   a[score]='\0';
   for(i=0;i<score;i++)
   {
     if(a[i]>='a' && a[i]<='z')
       a[i]=a[i]-32;
     if(!s[a[i]])
      printf("%c",a[i]);
      s[a[i]]=1;
   }
   printf("\n");
   return 0;
}
阅读更多
版权声明:欢迎各位大佬来纠正,发表更好的方法 https://blog.csdn.net/ZJWSA/article/details/72511086
个人分类: pat
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

旧键盘

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭