筆試題------刪除公共字符


#include<bits/stdc++.h>
using namespace std;
int main()
{
	string str_1, str_2;

	getline(cin, str_1);
	getline(cin, str_2);
    //set的初始化
	unordered_set<char>set_2(str_2.begin(), str_2.end());
    //因爲程序中,需要刪除string中的元素,刪除string的元素之後的迭代器會失效,
	for (auto it=str_1.begin(); it!=str_1.end(); )
	{
		if (set_2.find(*it) != set_2.end())
		{
            //刪除元素之後,it會停留在原位置,因爲,string是順序容器,所以後面的元素會補上,it不做遞增,繼續處理
            //如果是刪除的時候關聯容器的話,因爲刪除之後,元素間不是連續的,後面的元素不會增上來,所以it需要遞增
			str_1.erase(it);
            //res+=*it;
		}
        else it++;
	}
	cout << str_1<< endl;
    return 0;
}

 


 轉換思維,增加空間,新建一個string,

#include<bits/stdc++.h>
using namespace std;

int main()
{
	string str_1, str_2;

	getline(cin, str_1);
	

	getline(cin, str_2);
	//cout << str_1 << endl;
	//cout << str_2 << endl;
        string res;
	unordered_set<char>set_2(str_2.begin(), str_2.end());
	for (auto it=str_1.begin(); it!=str_1.end(); it++)
	{
		if (set_2.find(*it) == set_2.end())
		{
			//str_1.erase(it);
                    res+=*it;
		}
	}
	cout << res << endl;
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章