PAT 1033 舊鍵盤打字 (字串 雜湊)

2022-09-09 03:18:06 字數 1233 閱讀 5901

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

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

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

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

7+ie.

7_this_is_a_test.

_hs_s_a_tst

①首先開乙個128的bool型陣列,並將初始值設為true,預設所有鍵都是好的(ps.這裡不能用bool hashtable[128]=;這樣的語句,這種語句只能用於賦予初值全是flase的情況,要用memset函式)

1 memset(hashtable,true,sizeof(hashtable));

②輸入兩個字串,第乙個迴圈:將壞鍵的hashtable值設為false,可以想到,如果a壞了,那麼a對應的小寫字母a也不能輸出了,故若bad[i]是大寫字母,將其對應的小寫字母也變成false

1

for(int i=0;i)

6 }

③第二個迴圈:輸出str,若雜湊值為true,說明這個鍵沒有壞,在這個前提下還要檢驗如果是大寫字母上檔鍵是不是壞了(+號的ascii碼值為43)

1

for(int i=0;i)

6 }

1 #include2

using

namespace

std;

3const

int maxn=100010;4

intmain()18}

19for(int i=0;i) 24}

25 }

PAT 1033 舊鍵盤打字

思路 用string定義兩個字串,然後比較就可以了。然而,開始直接用cin str1 str2,導致有部分測試點始終未過去,後來參考他人的部落格才發現這裡應該用getline原因就在於第一行可能是空行。錯誤 include include include using namespace std in...

PAT 1033 舊鍵盤打字 20

時間限制 200 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字元就不會出現。現在給出應該輸入的一段文字 以及壞掉的那些鍵,打出的結果文字會是怎樣?輸入格式 輸入在2行中分別給出壞掉...

PAT1033舊鍵盤打字 20

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