UVa 156 Ananagrams

UVa 156 Ananagrams
把每个单词全部转化成小写字母,然后对每个单词的字母排序,同时原单词也需要存储,因为输出时要用到。如果排序之后的单词只出现了一次,那么将它对应的原单词输出。
STL会不会降低coder设计算法的能力啊?我都担心了~现在成了STL控,多简单的程序map、set都用上了……
以下是我的代码:
#include < iostream >
#include
< vector >
#include
< string >
#include
< map >
#include
< algorithm >
#include
< cstdio >
#include
< cctype >
using   namespace  std;

int  main()
{
    
/*
    freopen("data.in","r",stdin);
    freopen("data.out","w",stdout);
    //
*/

    multimap
< string , string >  r;
    
string  t;
    
while (cin >> &&  t != " # " )
    {
        
string  t_copy(t);
        
for ( int  i = 0 ;i < t_copy.size();i ++ )
            t_copy[i]
= tolower(t_copy[i]);
        sort(t_copy.begin(),t_copy.end());
        r.insert(make_pair(t_copy,t));
    }

    vector
< string >  ans;
    
for (multimap < string , string > ::iterator i = r.begin();i != r.end();i ++ )
        
if (r.count(i -> first) == 1 )
            ans.push_back(i
-> second);
    sort(ans.begin(),ans.end());

    
for ( int  i = 0 ;i < ans.size();i ++ )
        cout
<< ans[i] << endl;

    
return   0 ;
}

你可能感兴趣的:(UVa 156 Ananagrams)