1033 舊鍵盤打字 20分

2021-10-03 21:35:31 字數 1506 閱讀 8412

舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字元就不會出現。現在給出應該輸入的一段文字、以及壞掉的那些鍵,打出的結果文字會是怎樣?

輸入格式:

輸入在 2 行中分別給出壞掉的那些鍵、以及應該輸入的文字。其中對應英文本母的壞鍵以大寫給出;每段文字是不超過 10​5​​ 個字元的串。可用的字元包括字母 [a-z, a-z]、數字 0-9、以及下劃線 _(代表空格)、,、.、-、+(代表上檔鍵)。題目保證第 2 行輸入的文字串非空。

注意:如果上檔鍵壞掉了,那麼大寫的英文本母無法被打出。

輸出格式:

在一行中輸出能夠被打出的結果文字。如果沒有乙個字元能被打出,則輸出空行。

輸入樣例:

7+ie.

7_this_is_a_test.

輸出樣例:

_hs_s_a_tst

(讓我頭疼的一條題目)

第一次提交:得1分,只有測試點2對;

第二次提交:得19分,只有測試點2不對,多次修改,依舊不對(演算法筆記上的**也不對)。

經搜尋,測試點2不過的原因是:輸入的字串可能為空,不適合使用scanf()進行輸入,這裡使用cin.getline(str,maxn);getline(cin,str);

(1)壞鍵中的英文本母用大寫

(2)第二行字母非空不代表第一行字母不非空

(3)大寫字母的輸出需要保證上檔鍵和小寫字母鍵都完好

設定乙個hashtable陣列,初值全為true;

(1)第一行輸入的字元為壞鍵,由於大寫需要通過上檔鍵加小寫字母才能輸出,所以先將壞鍵中的大寫字母變為小寫字母,對應的hash陣列值改為false,記錄為壞鍵;

(2)依次掃瞄第二行字串,對於第i個字元,如果是大寫字母,要確定其對應的小寫字母的hash值和上檔鍵的hash值是否全都為true,若全都為true,則可以輸出,剩下的符號只要其對應的hash值為true即可輸出。

**如下:

#include

#include

using

namespace std;

intmain()

hash[str[i]]=

false;}

getline

(cin,str)

;for

(int i =

0; i < str.

size()

; i++)}

else

if(hash[str[i]])

}return0;

}

1、定義雜湊陣列時,如果寫成bool hash[128];一定要放在main函式裡面,否則會出現編譯錯誤;如果寫成bool hashtable[128];則可以放在main函式外面,建議一直使用hashtable

2、getline的使用條件:輸入的字串型別為string型、標頭檔案要加#include

1033 舊鍵盤打字(20 分)

1033 舊鍵盤打字 20 分 舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字元就不會出現。現在給出應該輸入的一段文字 以及壞掉的那些鍵,打出的結果文字會是怎樣?輸入格式 輸入在 2 行中分別給出壞掉的那些鍵 以及應該輸入的文字。其中對應英文本母的壞鍵以大寫給出 每段文字是不超過 10 5 個...

1033 舊鍵盤打字 (20 分)

1033 舊鍵盤打字 20 分 舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字元就不會出現。現在給出應該輸入的一段文字 以及壞掉的那些鍵,打出的結果文字會是怎樣?輸入格式 輸入在 2 行中分別給出壞掉的那些鍵 以及應該輸入的文字。其中對應英文本母的壞鍵以大寫給出 每段文字是不超過 10 5 1...

1033 舊鍵盤打字 20 分

舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字元就不會出現。現在給出應該輸入的一段文字 以及壞掉的那些鍵,打出的結果文字會是怎樣?輸入在 2 行中分別給出壞掉的那些鍵 以及應該輸入的文字。其中對應英文本母的壞鍵以大寫給出 每段文字是不超過 10 5 個字元的串。可用的字元包括字母 a z,a ...