反片语(UVA156)
题目解析:是对map,vector的一个很好的练习 首先该单词不能通过字母重新排列 那么先把该单词全部转化为小写 然后排序 用map容器记录每个排序完成的单词出现的次数 然后用vector容器记录排序之前的单词。。
噢可 怎么会越刷题目越渴睡
#include<cstdio>
#include<cmath>
#include<algorithm>
#include <iostream>
#include <map>
#include <vector>
using namespace std;
map<string,int> mp;
vector<string> vec;
string stander(string s)
{
for(int i=0;i<s.length();i++)
{
s[i]=tolower(s[i]);
}
sort(s.begin(),s.end());
return s;
}
int main()
{
string s;
while(cin>>s){
if(s[0]=='#') break;
vec.push_back(s);
string ss=stander(s);
if(!mp.count(ss))
mp[ss]=0;
mp[ss]++;
}
vector <string> ans;
for(int i=0;i<vec.size();i++)
if(mp[stander(vec[i])]==1)
ans.push_back(vec[i]);
sort(ans.begin(),ans.end());
//for(int i=0;i<ans.size();i++)
//cout<<ans[i]<<endl;
vector <string>::iterator it;
for(it=ans.begin();it!=ans.end();it++)
cout<<*it<<endl;
return 0;
}
//也许不会AC 凑活着看吧
还没有评论,来说两句吧...