UVa - 156 Ananagrams(STL)

来源:互联网 发布:linux内核开发流程 编辑:程序博客网 时间:2024/05/01 03:16
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19294
#include <iostream>#include <algorithm>#include <string>#include <vector>#include <map>using namespace std;/***************************************************************************************************************                题意:找出不能通过字母重重排的单词,按字典序输出(came 和 mace 属于重排单词,不能输出)                思路:                1,熟悉STL的用法                2,压栈用原字符串,处理用小写单词,输出原串***************************************************************************************************************/vector <string> words;map <string,int> cnt;string fuc(string s){    string ans=s;    for(int i = 0;i < ans.length();i ++)        if(isalpha(ans[i]))     //判断是否为小写字母,返回0是非小写字母,否则是            ans[i]=tolower(ans[i]);     //将小写字母转换成大写字母    sort(ans.begin(),ans.end());    return ans;}int main(){    string s;    while(cin>>s,s != "#")    {        words.push_back(s);        string temp=fuc(s);        if(!cnt.count(temp))    cnt[temp]=0;        cnt[temp]++;    }    vector <string> ans;    for(int i = 0;i < words.size();i ++)        if(cnt[fuc(words[i])] == 1)            ans.push_back(words[i]);    sort(ans.begin(),ans.end());    for(int i = 0;i < ans.size();i ++)        cout<<ans[i]<<endl;    return 0;}

0 0
原创粉丝点击