PAT乙级1029

题目链接

https://pintia.cn/problem-sets/994805260223102976/problems/994805292322111488

题解

思路:

可以想到,没有坏键的话就是两个字符串是一样的。所以我们按下标进行比较,发现不一样的就是坏掉的,然后在错误字符串的该位置添加一个字符,以确保两字符串下标对应。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// PAT BasicLevel 1029
// https://pintia.cn/problem-sets/994805260223102976/problems/994805292322111488

#include <iostream>
#include <string>
using namespace std;

int main()
{
// 正确和错误的字符串
string right,wrong;
cin >> right >> wrong;

// 坏掉的键
string wrongKeys="";

// 寻找坏掉的键
for(int i=0;i<right.length();++i){
if (right[i] != wrong[i]){

// 在wrong里占个位子,更新下标
wrong.insert(wrong.begin() + i, '#');

// 处理丢失的字符(小写转大写)
if (islower(right[i])){
right[i]-=32;
}

// 记录新发现的未重复的坏键
if(wrongKeys.find(right[i])==wrongKeys.npos){
wrongKeys+=right[i];
}
}
}

// 输出结果
cout << wrongKeys;

//system("pause");
return 0;
}

作者:@臭咸鱼

转载请注明出处:https://www.cnblogs.com/chouxianyu/

欢迎讨论和交流!