PAT 乙级 1029 旧键盘(20) C++版

1029. 旧键盘(20)

时间限制
200 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

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

输入格式:

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

输出格式:

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

输入样例:
7_This_is_a_test
_hs_s_a_es
输出样例:
7TI

思路:输入之后,一一比较,如果不同则是缺失的,为了输出方便,当碰到小写字母时就转为大写存储,否则直接存储,然后在输出时判断前面是否输出相同元素即可

 1 // 1029.cpp : 定义控制台应用程序的入口点。
 2 //
 3 
 4 #include "stdafx.h"
 5 #include<iostream>
 6 #include<vector>
 7 #include<string>
 8 #include<cctype>
 9 #include<algorithm>
10 
11 using namespace std;
12 
13 int main()
14 {
15     string input, output;
16     vector<char> v;
17 
18     getline(cin, input);
19     getline(cin, output);
20 
21     for (int i = 0,j=0; i < input.size(); ++i)
22     {
23         if (input[i] != output[j])//如果不同即为缺失的
24         {
25             if (islower(input[i]))//如果是小写,转为大写
26                 input[i]=toupper(input[i]);
27 
28             v.push_back(input[i]);
29         }
30         else
31             ++j;
32     }
33 
34     vector<char>::iterator i,begin = v.begin(), end = v.end();
35 
36     for (i = begin; i != end; ++i)
37     {
38         if (find(begin, i, *i) == i)//如果前面未出现则输出
39             cout << *i;
40     }
41 
42     cout << endl;
43 
44     return 0;
45 }


原文地址:https://www.cnblogs.com/cdp1591652208/p/7256883.html