[牛課習題]刪除公共字符

題目描述

輸入兩個字符串,從第一字符串中刪除第二個字符串中所有的字符。
例如,輸入”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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章