UVA156 Ananagrams(字符串处理)

来源:互联网 发布:unity3d人物控制脚本 编辑:程序博客网 时间:2024/05/18 22:12

题目:

思路:

给出一篇文章,以“#”结束,要求找出满足以下条件的字符串:

  • 该单词不能通过字母的重新排列组成文章中出现的另一个单词
  • 在判断满足条件时不区分大小写,但是在输出时要区分
  • 输出时按照字典序输出

我们把每一个单词转换成小写,排序,用map记录出现的次数

代码

#include <cstdio>#include <cstring>#include <cctype>#include <string>#include <set>#include <iostream>#include <stack>#include <map>#include <cmath>#include <queue>#include <vector>#include <algorithm>#define mem(a,b) memset(a,b,sizeof(a))#define inf 0x3f3f3f3f#define N 10000+20#define ll long longusing namespace std;map<string,int>mp;vector<string>v;string str(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&&s!="#")    {        v.push_back(s);        string r=str(s);        mp[r]++;    }    vector<string>ans;    for(int i=0; i<v.size(); i++)        if(mp[str(v[i])]==1)            ans.push_back(v[i]);    sort(ans.begin(),ans.end());    for(int i=0; i<ans.size(); i++)        cout<<ans[i]<<endl;    return 0;}
原创粉丝点击