UVaOJ 755 - 487--3279

AOAPC I: Beginning Algorithm Contests (Rujia Liu) :: Volume 1. Elementary Problem Solving ::Sorting/Searching


Description

一个电话号码, 有不同的表示方式。

输入不同方式表示的电话号码。

输出所有出现超过一次的电话号码及其出现频率。


Type

Sorting/Searching


Analysis

利用 STL, 轻松加愉快。


Solution

// UVaOJ 755
// 487--3279
// by A Code Rabbit

#include <algorithm>
#include <cctype>
#include <iostream>
#include <map>
#include <string>
using namespace std;

const char MAP[] = "22233344455566677778889999";

int n;
string tel;

int main() {
    int t;
    cin >> t;
    while (t--) {
        // Input.
        cin >> n;
        cin.get();
        map<string, int> cnt;  
        for (int i = 0; i < n; i++) {
            getline(cin, tel);
            tel.erase(remove(tel.begin(), tel.end(), '-'), tel.end());
            for (int i = 0; i < tel.length(); i++)
                if (isupper(tel[i]))
                    tel[i] = MAP[tel[i] - 'A'];
            tel.insert(3, "-");
            cnt[tel]++;
        }
        // Output.
        bool bo = false;
        for (map<string, int>::iterator
            iter = cnt.begin(); iter != cnt.end(); ++iter)
        {
            if (iter->second > 1) {
                cout << iter->first + " " << iter->second << endl;
                bo = true;
            }
        }
        if (!bo) cout << "No duplicates." << endl;
        if (t) cout << endl;
    }

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值