Uva_156 Ananagrams ( map 的应用 )

题目

Uva_156 Ananagrams ( map 的应用 )

Sample Input

ladder came tape soon leader acme RIDE lone Dreis peat
ScAlE orb eye Rides dealer NotE derail LaCeS drIed
noel dire Disk mace Rob dries

Sample Output

Disk
NotE
derail
drIed
eye
ladder
soon

题解

题目输入文本中的单词 , 如果不分大小写和其他单词不同 , 则可以输出这个单词 ( 注意是原题目的单词 )  , 最终的输出是文本中可以输出的单词 再按字典顺 输出 
思路很简单 , 将每个单词排序以后用map标记一下 , 存进另一个数组里 , 最后sort一下数组 , 输出 

代码

#include <bits/stdc++.h> 
using namespace std ; 
#define rg register 

string rep ( string & s ) { 
    string t(s) ; 
    for ( rg int i = 0 ; i < t.size() ; ++i ) 
        t[i] = tolower( t[i] ) ; 
    sort( t.begin() , t.end() ) ; 
    return t ; 
}

int main ( ) { freopen( "F:\\in\\summer_map.txt" , "r" , stdin ) ; 

string s[1000+10] ;
string ans[1000+10]; 
map<string,int> mp ; 
rg int k = 0 ; 
rg int cnt = 0 ; 
    mp.clear() ; 

    while ( cin >> s[k] ) { // 读入 
        mp[rep(s[k])]++ ; 
        k++ ; 
    }
    for ( rg int i = 0 ; i < k-1 ; ++i ) {  // k-1 是 '#' 
        if ( mp[rep(s[i])] == 1 ) { 
            ans[cnt] = s[i] ; 
            cnt++ ; 
        }
    }
    sort ( ans , ans+cnt ) ; 
    for ( rg int i = 0 ; i < cnt ; ++i ) 
        cout << ans[i] << endl ; 

    return 0 ; 
}
上一篇:Foreign Exchange UVA - 10763


下一篇:UVa 1586 Molar mass(分子量)