開啟章節選單

10222 Decode the Mad man

題目連結

題目敘述

BUET 大學的一位老教授突然發瘋,開始說出一些奇怪的話語,沒有人能理解他的講課內容。最終,學校陷入了困境,無法讓這位教授繼續教書。 突然,一位學生創造了一個可以將教授說的話解碼的程式。從此之後,教授又能正常教學,大家都感到非常高興。 現在,你的任務就是寫一個相同的程式,來解碼這位瘋狂教授的語言。

輸入格式

輸入僅包含一筆測試資料,也就是編碼後的訊息。這筆資料包含一個或多個單字,字母皆為小寫。

輸出格式

根據輸入的測試資料,輸出解碼後的訊息。解碼方式是將每個字母或符號替換為鍵盤上它左邊第二個鍵的符號。空白和換行請直接輸出。

解題思路

建立一個代表鍵盤順序的字串,輸出未解碼字符前面的第二個字符。

程式碼

#include <bits/stdc++.h>
using namespace std;

int main() {
  string key = "`1234567890-=qwertyuiop[]\\asdfghjkl;'zxcvbnm,./";
  string s;
  while (getline(cin, s)) {
    for (char c : s) {
      if (c == ' ') {
        cout << ' ';
        continue;
      }
      for (int i = 0; i < key.size(); i++) {
        if (key[i] == c) {
          cout << key[i - 2];
          break;
        }
      }
    }
    cout << "\n";
  }
}