反片语(Ananagrams, UVa 156)

学习了map用法, 特别是count的用法:size_type count (const key_type& k) const; Count elements with a specific key. Searches the container for elements with a key equivalent to k and returns the number of matches. return 1 if the container contains an element whose key is equivalent to k, or zero otherwise.

// uva156.cpp
#include <iostream>
#include <string>
#include <cctype>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
map<string, int> cnt;
vector<string> words;
char my_tolower(char c){ return tolower(c); }
string std_form(string s){
    transform(s.begin(), s.end(), s.begin(), my_tolower);
    sort(s.begin(), s.end());
    return s;
}

int main(){
    ios::sync_with_stdio(false);
    string word;
    words.clear();
    while((cin >> word) && word[0] != '#'){
        words.push_back(word);
        word = std_form(word);
        if ( !cnt.count(word) ) cnt[word] = 1;
        else cnt[word]++;
    }
    sort(words.begin(), words.end());
    for(vector<string>::iterator it = words.begin(); it != words.end(); it++){
        if (cnt[ std_form(*it) ] == 1) cout << *it << endl;
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值