開啟章節選單

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";
    }
}