題目描述
輸入兩個字符串,從第一字符串中刪除第二個字符串中所有的字符。
例如,輸入”They are students.”和”aeiou”,則刪除之後的第一個字符串變成”Thy r stdnts.”
輸入描述:
每個測試輸入包含2個字符串
輸出描述:
輸出刪除後的字符串
示例:
輸入They are students.
aeiou輸出
Thy r stdnts.
題目分析:
- 輸入字符串中肯定含有空格,所以用getline接收,這個小技巧要注意。
- 如果採用暴力破解,依次從第二個字符串中取字符,再去遍歷第一個字符串,最後可能會由於複雜度過大而導致沒有通過全部測試用例
- 這裏我們採用一個256的數組去統計第二個字符串中都有哪些字符出現,然後遍歷第一個字符串,對於第一個字符串中的每一個字符,如果它在數組中出現的次數爲0,用一個string類對象直接+=,遍歷完成後,我們所創建的對象中就保存了所需結果。
代碼如下
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1, str2;
getline(cin, str1);
getline(cin, str2);
int hashtable[256] = {0};
for(const auto&e : str2)
hashtable[e]++;
string tmp;
for(const auto&e : str1)
{
if(hashtable[e] == 0)
tmp += e;
}
cout << tmp << endl;
return 0;
}