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的迭代器。當然,在此之前需要將英文類字元全部同意為大寫字母。最後輸出即可。