題目連結: https://onlinejudge.org/external/1/156.pdf
題目大意: 問字的排列組合,大小寫不分,若是重複出現。找不重複出現的字
思路: STL, Map. 全部排序轉換小寫為key,值為pair<int, string>次數+原始字串,走訪所有元素,查看是否次數等於1,輸出至set並印出。
代碼:
#include <bits/stdc++.h>
using namespace std;
int main()
{
map<string, pair<int, string>> dict;
string line;
while(getline(cin, line) && line != "#"){
stringstream ss(line);
string word;
while(ss >> word){
string ord = word;
transform(word.begin(), word.end(), word.begin(), [&](char c){
return c = tolower(c);
});
sort(word.begin(), word.end());
dict[word].first++;
dict[word].second = ord;
}
}
set<string> ans;
for(auto m : dict){
if(m.second.first == 1){
ans.insert(m.second.second);
}
}
for(auto w: ans){
cout << w << endl;
}
return 0;
}
留言列表