PAT乙级1029

题目链接

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

题解

思路:

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

// 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/

欢迎讨论和交流!


原文地址:https://www.cnblogs.com/chouxianyu/p/11318427.html