UVA156 Ananagrams(字符串处理)

题目:
UVA156 Ananagrams(字符串处理)_第1张图片

思路:

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

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

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

代码

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define mem(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
#define N 10000+20
#define ll long long
using namespace std;
map<string,int>mp;
vector<string>v;
string str(string s)//把字符串进行标准化,排序
{
    for(int i=0; itolower(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; iif(mp[str(v[i])]==1)
            ans.push_back(v[i]);
    sort(ans.begin(),ans.end());
    for(int i=0; icout<return 0;
}

你可能感兴趣的:(【c++,STL】,【字符串处理】)