• Java编程简便技巧篇(二)——字母和数字之间的转换


    例题:

    这里是引用
    题目:请设计一个计票器程序,通过输入有效候选人列表和投票结果,计算出1.每个有效候选人的票数;2.无效票数;3.获得票数最多的人。
    注意:如果候选人的票数相同,则通过候选人列表中候选人的顺序决定谁胜出。如果票数中的无效票多于最高票候选人的票数或者票数为空,则无人获胜。

    例1
    Input:
    Valid Candidates Name [“A”,“B”,“C”]
    Vote Casted[“A”,“F”,“A”,“B”,“A”,“B”,“A”,“C”,“E”]
    Output:
    A=4 B=2 C=1 incalidVotes=2 Winner = A
    例2:
    Input:
    Valid Candidates Name[“A”,“C”,“B”]
    Vote Casted[“A”,“F”,“B”,“B”,“B”,“C”,“C”,“C”,“E”]
    Output:
    A=1 B=3 C=3 invalidVotes=2 Winner = C
    (B、C票数相同,但是候选人列表中C的位置靠前,所以C获胜
    例3:
    Input:
    Valid Candidates Name[“A”,“C”,“B”]
    Vote Casted[“R”,“F”,“G”,“B”,“B”,“K”,“L”,“C”,“E”]
    Output:
    A=0 C=1 B=2 invalidVotes=6 Winner = N/A
    例4:
    Input:
    Valid Candidates Name[“A”,“C”,“B”]
    Vote Casted[]
    Output:
    A=0 C=0 B=0 invalidVotes=0 Winner = N/A

    代码

    public static String countVotes(List<String> validCandidates, List<String> voteCasted){
    
    
            int invalid = 0;
            HashMap<Integer, Integer> map = new HashMap<>();
    
            for (int i = 0; i < voteCasted.size(); i++) {
                int toNum = voteCasted.get(i).toCharArray()[0] - 'A' + 1;
                if (toNum > (validCandidates.size() + 1)){
                    invalid++;
                    continue;
                }else {
                    map.put(toNum, map.getOrDefault(toNum, 0) + 1);
                }
            }
    
            StringBuilder sb = new StringBuilder();
            int max = 0 ;
            String winner = new String();
            //找到最大的
            for (int i = 0; i < validCandidates.size(); i++) {
                if (map.get(validCandidates.get(i).toCharArray()[0] - 'A' + 1)!= null && map.get(validCandidates.get(i).toCharArray()[0] - 'A' + 1) > max){
                    max = map.get(validCandidates.get(i).toCharArray()[0] - 'A' + 1);
                    winner = validCandidates.get(i);
                }
                sb.append(validCandidates.get(i));
                sb.append("=");
                if (map.get(validCandidates.get(i).toCharArray()[0] - 'A' + 1) != null){
                    sb.append(map.get(validCandidates.get(i).toCharArray()[0] - 'A' + 1));
                }else {
                    sb.append(0);
                }
                sb.append(" ");
            }
            Collections.sort(validCandidates);
            sb.append("invalidVotes=");
            sb.append(String.valueOf(invalid));
            sb.append(" Winner=");
            if (max > 0 && max > invalid){
                sb.append(winner);
            }else {
                sb.append("N/A");
            }
            return sb.toString();
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    其中的x.toCharArray()[0] - 'A' + 1即是把字母x对应的数字
    把数字转为字母的的方法如下

     int num = 5;
     String letter = String.valueOf(((char)(((num - 1) % 26) + (int)'A')));
     System.out.println(letter);
    
    • 1
    • 2
    • 3
  • 相关阅读:
    Keithley 2400和Keithley 2450 FET(场效应管)的输出特性测量 软件
    【科普向】5G核心网架构和关键技术
    【独立站运营】做社交媒体营销的两大关键点
    vim编辑器
    别以为面试完就完事了!大厂HR告诉你这件事不做就亏大了!
    ASP.NET Core 6框架揭秘实例演示[39]:使用最简洁的代码实现登录、认证和注销
    Taro,小程序scroll-view 填满剩下的高度空间,关闭页面回跳(部分ios机型 滚动不到底部)
    Shell gawk编辑器
    基于flask和网页端部署yolo自训练模型
    特种设备怎么运输到国外
  • 原文地址:https://blog.csdn.net/bruce_zhao1407/article/details/126430509