1029 舊鍵盤 (20 分)
- 2019 年 11 月 22 日
- 筆記
1029 舊鍵盤 (20 分)
舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字元就不會出現。現在給出應該輸入的一段文字、以及實際被輸入的文字,請你列出肯定壞掉的那些鍵。
輸入格式:
輸入在 2 行中分別給出應該輸入的文字、以及實際被輸入的文字。每段文字是不超過 80 個字元的串,由字母 A-Z(包括大、小寫)、數字 0-9、以及下劃線 _
(代表空格)組成。題目保證 2 個字元串均非空。
輸出格式:
按照發現順序,在一行中輸出壞掉的鍵。其中英文字母只輸出大寫,每個壞鍵只輸出一次。題目保證至少有 1 個壞鍵。
輸入樣例:
7_This_is_a_test _hs_s_a_es
輸出樣例:
7TI
【我的程式碼】
// 1029 舊鍵盤 (20 分).cpp : 此文件包含 "main" 函數。程式執行將在此處開始並結束。 // #include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; int main(){ //輸入 string input_all, input_old; cin >> input_all >> input_old; vector<char> res; int index = 0, index_old = 0; while (index != input_all.size() - 1) { if (input_all[index] == input_old[index_old]) { index++; index_old++; } else { char i = input_all[index]; //大小寫轉化 if (i >= 'a' && i <= 'z') { i -= 32; } if (find(res.begin(), res.end(), i) == res.end()) { res.push_back(i); } index++; } } for (int i = 0; i < res.size(); i++) { cout << res[i]; } }
【總結】
整體難度也不大,使用兩個字元串接受輸入,然後使用兩個指針(實際上就是索引啦!)來分別進行比對,如果相等就說明沒有壞掉。這裡使用了vector來進行輸出結果的接受,因此需要保證不能重複,就使用了find函數,如果找不到對應字元串,則find函數會指向end的迭代器。當然,在此之前需要將英文類字元全部同意為大寫字母。最後輸出即可。