PAT1029

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

输入格式:

输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括大、小写)、数字0-9、以及下划线“_”(代表空格)组成。题目保证2个字符串均非空。

输出格式:

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

输入样例:

7_This_is_a_test
_hs_s_a_es

输出样例:

7TI

 

 

# include<iostream>
# include<algorithm>
# include<stdio.h>
# include<string>
using namespace std;
void print(char ch)   //输出函数
{
    if(ch>='a' && ch<='z')
    {
        ch = ch - 32; //将小写转化为大写
        cout<<ch;
    }
    else
    {
        cout<<ch;
    }
}
int main()
{
    string a,b;
    int i,j;
    cin>>a>>b;
    for(i=0;i<b.length();i++)
    {
           for(j=0;j<a.length();j++)
           {
                 if(b[i]==a[j])
                 {
                    a[j]='+';          //有相同的字符用+号替代 剩下的都是实际输入的字符串中不存在的字符
           }
       }
    }
    int flag,h=0;
    char s[100];  //用来存放输出过的字符
    for(i=0;i<a.length();i++)
    {
           flag = 0;
           if(a[i]!='+')
           {
                  if(a[i]>='a' && a[i]<='z')  //因为大小写其实是同一个键,所以要进行一定的处理,否则最后答案可能会出现重复的字母
                  {
                       a[i] = a[i] - 32;    
             }
                  for(j=0;j<h;j++)          //判断这个字符是否输出过
                  {
                       if(a[i]==s[j])
                       {
                            flag = 1;break;    
                 } 
              }
           if(flag==0)
           {
                 print(a[i]);
                 s[h] = a[i];
                 h++;
           }
       }
    }
    return 0;
}

 

posted on 2017-01-17 18:08  qq77530202  阅读(146)  评论(0编辑  收藏  举报