Ananagrams (多种stl)

题意  给你一篇文章  以"#"号结束   按字典序求输出这篇文章中真正只出现过一次的单词   就是不能通过字母重新排列得到文章中另一个单词的单词

把每个单词的字母全部化为小写  再把这个单词中的字母按字典序排列  得到一个字符串  用map记下出现次数就行   只出现过一次的就是要输出的

 

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <map>
#include <string>
#include <set>
#include <sstream>
#include <vector>


using namespace std;

string s,t;
set<string>st;
vector<string>ans;
map<string,string>ss;
map<string,int>cnt;

int main()
{
    while(cin>>s&&s!="#")
    {
        t=s;
        ans.push_back(s);
        for(int i=0;i<t.length();++i)
        {
            t[i]=tolower(t[i]);

        }
        sort(t.begin(),t.end());
            ss[s]=t;
            ++cnt[t];

    }
    sort(ans.begin(),ans.end());
    for(vector<string>::iterator it=ans.begin();it!=ans.end();++it)
    {
        if(cnt[ss[*it]]==1) cout<<*it<<endl;
    }
    return 0;
}

 

posted @ 2018-07-21 22:06  Somnus、M  阅读(275)  评论(0编辑  收藏  举报