您的位置:首页 > 其它

UVA 156 Ananagrams

2014-08-01 19:06 288 查看
STL的应用

#include<map>
#include<cstdio>
#include<string>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
string str, s;
map<string, int>mp;
vector<string>V, ans;
void recordStr(string s){
//cout << "here" << " " <<  s << endl;
for(int i = 0;i < s.size();i ++)
if(s[i] >= 'A' && s[i] <= 'Z') s[i] += 32;
sort(s.begin(), s.end());
map<string, int>::iterator it = mp.find(s);
if(it == mp.end()) mp.insert(pair<string, int>(s, 1));
else it->second ++;
}
bool isOnce(string s){
for(int i = 0;i < s.size();i ++)
if(s[i] >= 'A' && s[i] <= 'Z') s[i] += 32;
sort(s.begin(), s.end());
map<string, int>::iterator it = mp.find(s);
return it->second == 1;
}
int main(){
//freopen("in.cpp", "r", stdin);
while(getline(cin, str, '\n') && str != "#"){
//cout << str << endl;
str += " ";
for(int i = 0;i < str.size();i ++){
if(str[i] == ' '){
if(s.empty()) continue;
recordStr(s);
V.push_back(s);
s.clear();
}else s.append(1, str[i]);
}
str.clear();
}
for(int i = 0;i < V.size();i ++)
if(isOnce(V[i])) ans.push_back(V[i]);
sort(ans.begin(), ans.end());
for(int i = 0;i < ans.size();i ++) cout << ans[i] << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: