PAT-ADVANCED1050——String Subtraction
阿新 • • 發佈:2018-12-19
題目描述:
題目翻譯:
1050 字串相減
給出兩個字串S1和S2,S = S1 - S2倍定義成除去S2中所有字元的S1的剩餘字串。你的任務是對任意給定的兩個字串,計算出S1 - S2的值。但是,快速完成它可能並不那麼簡單。
輸入格式:
每個輸入檔案包含一個測試用例。每個測試用例有兩行,分別表示S1和S2。每個字串的長度不超過10 ^ 4。題目保證所有字元都是可見的ASCII碼和空格,並且新的行字元表示字串的結尾。
輸出格式:
對每個測試用例,在一行中輸出S1 - S2的結果。
輸入樣例:
They are students.
aeiou
輸出樣例:
Thy r stdnts.
知識點:字串、雜湊表
思路:用一個大小為256的陣列記錄字串S2中出現過的字元
遍歷S1中字元時,如果該字元在S2中出現過,則不輸出。
時間複雜度是O(len1 + len2),其中len1是字串S1的長度,len2是字串S2的長度。空間複雜度是O(256)。
C++程式碼:
#include<iostream> #include<string> using namespace std; int main(){ bool flag[256]; fill(flag, flag + 256, true); string input1; string input2; getline(cin, input1); getline(cin, input2); for(int i = 0; i < input2.length(); i++){ flag[input2[i]] = false; } for(int i = 0; i < input1.length(); i++){ if(flag[input1[i]]){ printf("%c", input1[i]); } } return 0; }
C++解題報告: