`
翼若云
  • 浏览: 6498 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

POJ1002 487-3279

    博客分类:
  • poj
 
阅读更多

这个题目主要是涉及进行电话号码的转换,使用TreeMap来对电话号码进行统计以及排序。

 

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;


public class Main {
    private static Map<Character,Character> map = new HashMap<Character, Character>();
    static {
        map.put('A','2');
        map.put('B','2');
        map.put('C','2');
        map.put('D','3');
        map.put('E','3');
        map.put('F','3');
        map.put('G','4');
        map.put('H','4');
        map.put('I','4');
        map.put('J','5');
        map.put('K','5');
        map.put('L','5');
        map.put('M','6');
        map.put('N','6');
        map.put('O','6');
        map.put('P','7');
        map.put('R','7');
        map.put('S','7');
        map.put('T','8');
        map.put('U','8');
        map.put('V','8');
        map.put('W','9');
        map.put('X','9');
        map.put('Y','9');
    }
    public static void main(String args[]) throws Exception
    {
        Scanner cin=new Scanner(System.in);
        int count = cin.nextInt();
        cin.nextLine();
        Map<String,Integer> phoneToCountMap = new TreeMap<String, Integer>();
        for(int idx = 0;idx < count;idx++){
            String rawPhone = cin.nextLine();
            String standardPhone = convertToStandardPhone(rawPhone);
            int phoneCount = 0;
            if(phoneToCountMap.containsKey(standardPhone)){
                phoneCount = phoneToCountMap.get(standardPhone);
            }
            phoneCount++;
            phoneToCountMap.put(standardPhone,phoneCount);
        }


        int dupCount = 0;
        for (Map.Entry<String, Integer> stringIntegerEntry : phoneToCountMap.entrySet()) {
            int phoneCount = stringIntegerEntry.getValue();
            if(phoneCount > 1){
                dupCount++;
                System.out.println(stringIntegerEntry.getKey()+" "+stringIntegerEntry.getValue());
            }
        }

        if(dupCount == 0){
            System.out.println("No duplicates.");
        }

    }

    
    private static String convertToStandardPhone(String rawPhone){
        char[] charArray = rawPhone.toCharArray();
        StringBuilder builder = new StringBuilder("");
        for (char c:charArray){
            if(c == '-'){
                continue;
            }
            if(map.containsKey(c)){
                c = map.get(c);
            }
            if(builder.length() == 3){
                builder.append('-');
            }
            builder.append(c);
        }
        return builder.toString();
    }
}
 
分享到:
评论

相关推荐

    POJ 1002 487-3279 测试数据 完整

    East Central North America 1999。50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50...

    POJ 1002 487-3279解题报告

    ### POJ 1002 487-3279 解题报告 #### 题目背景与概述 本题目属于电话号码处理问题,主要考查字符串处理、哈希表应用以及排序等相关算法知识。题目描述了一个有趣的场景:为了方便记忆,企业往往希望自己的电话...

    POJ1002-487-3279【Hash+Qsort】

    标题中的"POJ1002-487-3279【Hash+Qsort】"是指一个编程挑战题目,通常在在线编程平台上出现,比如北京大学的Peking Online Judge (POJ)。这个题目结合了哈希表(Hash)和快速排序(Qsort)两种算法来解决问题。哈希...

    POJ 1002 487-3279 telephone numbers

    487-3279 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 102808 Accepted: 17241 Description Businesses like to have memorable telephone numbers. One way to make a telephone number ...

    POJ 1002 487-3279 电话号码查重源代码

    如题所示,亲测可用。电话号码查重,不会的同学可以参考下,会做的同学可以给挑挑毛病!大家以代码会友!

    POJ题目分析与理解

    此外,POJ题目还包括一些数学题目,例如,1001 Exponentiation、1002 487-3279、1003 Hangover 等。这类题目需要程序员使用数学知识和算法来解决问题。 POJ题目是一个非常有价值的资源,对于程序员来说,通过解决...

    算法分类以及POJ题目分类

    2. 1002 487-3279:电话号码的转换,了解数字系统和位运算。 3. 1003 Hangover:简单的模拟醉酒状态,注意条件分支。 4. 2301 Beat the Spread!: 模拟体育比赛的赌注,理解概率和比较。 5. 2304 Combination Lock:...

    poj题目分类...

    * 1002 487-3279 * 1003 Hangover * 1701 Dissatisfying Lift * 2301 Beat the Spread! * 2304 Combination Lock * 2328 Guessing Game * 2403 Hay Points * 2406 Power Strings * 2339 Rock, Scissors, Paper * ...

    POJ各题算法分类和题目推荐 ACM必看

    * 1002 487-3279:本题目要求使用编程语言来模拟电话号码的格式化。 * 1003 Hangover:本题目要求使用编程语言来模拟酒吧的营业情况。 * 1701 Dissatisfying Lift:本题目要求使用编程语言来模拟电梯的运行情况。 * ...

Global site tag (gtag.js) - Google Analytics