题目描述回忆版:输入字符串数组,输出出现次数第二多的小写字母及其出现次数,如果没有第二多的(即都并列多)返回空;如果有并列的,以字母排序。ep:输入:["abb","cdd34&","#$2d3ddaa"]输出:a-3package com.example;// 本题为考试单行多行输入输出规范示例,无需提交,不计分。import java.util.*;//题目:输入一个String[],输出出现次数第二多的小写字母,如果没有第二少的返回空;如果有并列的,以字母排序。public class ToFindTheSecondLowerCharacter {    public static String getAns(String[] ss ){        HashMap<Character,Integer> hm = new HashMap<>();        for (int i = 0; i < ss.length; i++) {            String a = ss[i];            for (int j = 0; j < a.length(); j++) {                char ch = a.charAt(j);                if(ch>='a'&&ch<='z') {                    hm.put(ch, hm.getOrDefault(ch, 0) + 1);                }            }        }  //对hash表进行自定义排序,从大到小,如果出现次数相同,根据ASC2码排序,        ArrayList<Map.Entry<Character, Integer>> entries = new ArrayList<>(hm.entrySet());//        entries.sort(((o1, o2) -> o2.getValue().compareTo(o1.getValue())));        entries.sort(new Comparator<Map.Entry<Character, Integer>>() {            @Override            public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) {                if (o1.getValue()> o2.getValue()){                    return o1.getValue();                }else if (o1.getValue().equals(o2.getValue())){                    return o1.getKey()>o2.getKey()? o1.getValue() : o2.getValue();                }                return o2.getValue();            }        });  //以下处理边界条件,提高测试用例通过率        if (entries.size()<2||entries==null){            return " ";        }        int index = 1;        while(index<entries.size()){            if(entries.get(index-1).getValue().equals(entries.get(index).getValue())){                index++;                continue;//跳出当前循环            }            Character key = entries.get(index).getKey();            Integer value = entries.get(index).getValue();            return key+"-"+value;        }        return " ";    }    public static void main(String[] args) {        Scanner in = new Scanner(System.in);        while (in.hasNextInt()) {// 注意,如果输入是多个测试用例,请通过while循环处理多个测试用例            int a = in.nextInt();            String[] ss = new String[a];            for (int i = 0; i < a; i++) {                String s = in.next();                ss[i]  = s;            }            System.out.println(getAns(ss));        }    }}
点赞 0
评论 1
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务