題目鏈結->link
思路和b1029類似,但是有幾個坑。
首先用hashmap陣列儲存不能輸出的字元,設為false,初始化用memset(),初值為true,不能像b1029初始化為bool hashmap=false。
注意壞掉的字元統一用大寫輸入,那麼要將其轉換為小寫,將小寫的hashmap設為false。
當要輸出大寫字母時,僅當』+'號和其小寫字母對於hashmap值為true時,才能輸出。
測試點3是鍵盤不壞,即輸入第一行為空時,要用gets()讀取,因為scanf()讀到空格就結束;但是pat的gcc不支援gets(),所以可以用fgets(str1,maxn,stdin)或者getline()讀入。
#include
#include
#include
#include
using
namespace std;
const
int maxn=
100005
;char str1[maxn]
,str2[maxn]
;bool hashmap[
128]
;int
main()
int len2=
strlen
(str2)
;for
(i=0
;ielse
if(hashmap[c2]
==true)}
printf
("\n");
//沒有字元可以輸出,則輸出空行
return0;
}
PAT B1033 舊鍵盤打字
pat b1033 利用map進行雜湊,凡是壞了的字母鍵盤將大小寫都進行雜湊。要單獨處理。對於要輸出的每乙個字元,如果該字元已經雜湊儲存過,則不輸出 對於大寫字母必須 和該字母鍵盤都完好時才輸出。include include include includeusing namespace std m...
PAT B1033 舊鍵盤打字
舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字元就不會出現。現在給出應該輸入的一段文字 以及壞掉的那些鍵,打出的結果文字會是怎樣?輸入在 2 行中分別給出壞掉的那些鍵 以及應該輸入的文字。其中對應英文本母的壞鍵以大寫給出 每段文字是不超過 10 5 個字元的串。可用的字元包括字母 a z,a ...
PAT B1033 舊鍵盤打字
1033 舊鍵盤打字 20 分 舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字元就不會出現。現在給出應該輸入的一段文字 以及壞掉的那些鍵,打出的結果文字會是怎樣?輸入在 2 行中分別給出壞掉的那些鍵 以及應該輸入的文字。其中對應英文本母的壞鍵以大寫給出 每段文字是不超過 10 5 個字元的串。...