ZeroJudge C054: WERTYU

題目敘述

題目採EOF方式收資料,每一筆資料有一行字串,要求輸出所有字元位於鍵盤上左邊的按鍵,Q、A、Z、`,這四個字元和空白除外。




範例輸入 #1

O S, GOMR YPFSU/

URD. ,U [JPMR MI,NRT OD 8346333

範例輸出 #1

I AM FINE TODAY.

YES, MY PHONE NUMBER IS 7235222


解題思路

可以使用Map來建檔,需要注意的是 \ 和 ' 都屬於特殊字元需要用另一個寫法,\ 要寫成 \\,' 要寫成 \'。

解題程式碼如下 (僅供參考):

#include <iostream>
#include <map>
using namespace std;

int main() {
    map<char, char>MAP;
    MAP['`'] = '`';
    MAP['1'] = '`';
    MAP['2'] = '1';
    MAP['3'] = '2';
    MAP['4'] = '3';
    MAP['5'] = '4';
    MAP['6'] = '5';
    MAP['7'] = '6';
    MAP['8'] = '7';
    MAP['9'] = '8';
    MAP['0'] = '9';
    MAP['-'] = '0';
    MAP['='] = '-';
    MAP['Q'] = 'Q';
    MAP['W'] = 'Q';
    MAP['E'] = 'W';
    MAP['R'] = 'E';
    MAP['T'] = 'R';
    MAP['Y'] = 'T';
    MAP['U'] = 'Y';
    MAP['I'] = 'U';
    MAP['O'] = 'I';
    MAP['P'] = 'O';
    MAP['['] = 'P';
    MAP[']'] = '[';
    MAP['\\'] = ']';
    MAP['A'] = 'A';
    MAP['S'] = 'A';
    MAP['D'] = 'S';
    MAP['F'] = 'D';
    MAP['G'] = 'F';
    MAP['H'] = 'G';
    MAP['J'] = 'H';
    MAP['K'] = 'J';
    MAP['L'] = 'K';
    MAP[';'] = 'L';
    MAP['\''] = ';';
    MAP['Z'] = 'Z';
    MAP['X'] = 'Z';
    MAP['C'] = 'X';
    MAP['V'] = 'C';
    MAP['B'] = 'V';
    MAP['N'] = 'B';
    MAP['M'] = 'N';
    MAP[','] = 'M';
    MAP['.'] = ',';
    MAP['/'] = '.';
    MAP[' '] = ' ';
    string str;
    while (getline(cin, str))
    {
        for (int i = 0; i<str.length(); i++)
        {
            cout << MAP[str[i]];
        }
        cout << "\n";
    }
}

留言

這個網誌中的熱門文章

ZeroJudge M933: 邏輯電路

ZeroJudge A148: You Cannot Pass?!

ZeroJudge A263: 日期差幾天