[PAT乙级]1029 旧键盘
生活随笔
收集整理的這篇文章主要介紹了
[PAT乙级]1029 旧键盘
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
舊鍵盤(pán)上壞了幾個(gè)鍵,于是在敲一段文字的時(shí)候,對(duì)應(yīng)的字符就不會(huì)出現(xiàn)。現(xiàn)在給出應(yīng)該輸入的一段文字、以及實(shí)際被輸入的文字,請(qǐng)你列出肯定壞掉的那些鍵。
輸入格式:
輸入在 2 行中分別給出應(yīng)該輸入的文字、以及實(shí)際被輸入的文字。每段文字是不超過(guò) 80 個(gè)字符的串,由字母 A-Z(包括大、小寫(xiě))、數(shù)字 0-9、以及下劃線 _(代表空格)組成。題目保證 2 個(gè)字符串均非空。
輸出格式:
按照發(fā)現(xiàn)順序,在一行中輸出壞掉的鍵。其中英文字母只輸出大寫(xiě),每個(gè)壞鍵只輸出一次。題目保證至少有 1 個(gè)壞鍵。
輸入樣例:
輸出樣例:
7TI代碼如下:
#include <iostream> #include <string> using namespace std;const int N = 100; int vis[N];int main() {string s1;string s2;cin >> s1 >> s2;for (int i = 0; i < s1.length(); i++){if (s1[i] >= 'a' && s1[i] <= 'z') s1[i] = s1[i] - 'a' + 'A';vis[s1[i]]++;}for (int i = 0; i < s2.length(); i++){if (s2[i] >= 'a' && s2[i] <= 'z') s2[i] = s2[i] - 'a' + 'A';vis[s2[i]]--;}for (int i = 0; i < s1.length(); i++){if (vis[s1[i]] > 0){vis[s1[i]] = 0;cout << s1[i];}}return 0; }代碼如下:
#include <iostream> #include <string> #include <vector> using namespace std; const int N = 300; bool vis[N] = { 0 }; vector<char> v;int main() {string s1;string s2;cin >> s1 >> s2;int idx1 = 0;int idx2 = 0;int len1 = s1.length();int len2 = s2.length();while (idx1 < len1 && idx2 < len2){if (s1[idx1] != s2[idx2]){if ((int)s1[idx1] >= 'a' && (int)s1[idx1] <= 'z' && !vis[s1[idx1]]){vis[s1[idx1]] = true;vis[s1[idx1] - 32] = true;v.push_back(s1[idx1]);}else if ((int)s1[idx1] >= 'A' && (int)s1[idx1] <= 'Z' && !vis[s1[idx1]]){vis[s1[idx1]] = true;vis[s1[idx1] + 32] = true;v.push_back(s1[idx1]);}else if (!vis[s1[idx1]]){v.push_back(s1[idx1]);vis[s1[idx1]] = true;}idx1++;}else{idx1++;idx2++;}}while (idx1 < len1){if ((int)s1[idx1] >= 'a' && (int)s1[idx1] <= 'z' && !vis[s1[idx1]]){vis[s1[idx1]] = true;vis[s1[idx1] - 32] = true;v.push_back(s1[idx1]);}else if ((int)s1[idx1] >= 'A' && (int)s1[idx1] <= 'Z' && !vis[s1[idx1]]){vis[s1[idx1]] = true;vis[s1[idx1] + 32] = true;v.push_back(s1[idx1]);}else if (!vis[s1[idx1]]){v.push_back(s1[idx1]);vis[s1[idx1]] = true;}idx1++;}for (vector<char>::iterator it = v.begin(); it != v.end(); it++){if ((int)*it >= 'a' && (int)*it <= 'z')cout <<(char) (*it-32);else cout << *it;}cout << endl;return 0; }總結(jié)
以上是生活随笔為你收集整理的[PAT乙级]1029 旧键盘的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [设计模式]模板方法模式
- 下一篇: [PAT乙级]1031 查验身份证