网易2019客户端开发实习生岗位线上笔试第一题

网易2019客户端开发实习生岗位线上笔试第一题

其实就是个数数的功能,给你一个输入文本,让你统计其中各单词出现次数,从大到小排,次数相同的按照单词ASCII表排:
输入规则:
第一行会是行数N ( 0 < N <= 500),之后N行中的每行第一个字段是数字X (0 <= X <= 500),表示该行后面有X个单词。数字与单词间,单词与单词间均以空格分隔。N行后会有一行,包含数字K ( 0 < K <= N),数据总大小不超过100K。
输入样例:
3
3 SQL DW AND
1 AND
3 SQL SQL DW
2
输出示例:
SQL 3
AND 2
DW 2

我的思路:
1、用双列集合HashMap存储单词和次数
2、用双列集合TreeMap构建比较器来取消重复限制,并按次数排序
3、将HashMap键值存入TreeMap的值和键中,进行反转
4、此时映射关系已经基本完成,还差一步同次数按码表排序没时间了。

哭死,当时用HashMap的get()方法来获取键结果一直是null但是后面的次数确是对的。。。迷。。。

我提交的结果是:
null 3
null 2
null 2

醉了啊,系统自动提交了结果匹配率0。可以GG了。

后来我改成EntrySet来获取键值对遍历,就可以了。。。cao。。。

最后那个重复次数排序的思路大概是这样:遍历到重复的时候把重复的单独抽出来构成TreeSet,键为单词,值为次数,String类自带比较,不用自己写。思想比较笨我也想不到其他的。。。就i这样吧,OVER

附上我的代码:

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

public class Test01 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        HashMap<String, Integer> hm=new HashMap<>();
        int lineNum = sc.nextInt();
        for(int i = 0; i < lineNum; i++){
            int wordNum=sc.nextInt();
            for(int j = 0; j < wordNum; j++){
                String s=sc.next();
                if(!hm.containsKey(s)) {
                    hm.put(s,1);
                }else {
                    hm.put(s, hm.get(s)+1);
                }
            }
        } 
        int x=sc.nextInt();
        TreeMap<String, String> tm=new TreeMap<>(new Comparator<String>() {

            @Override
            public int compare(String arg0, String arg1) {
                // TODO Auto-generated method stub
                int num=Integer.parseInt(arg1)-Integer.parseInt(arg0);
                return num==0?1:num;
            }});

        for(String s:hm.keySet()) {
            tm.put(hm.get(s).toString(), s);
        }

        for(Entry<String, String> e:tm.entrySet()) {
            System.out.println(e.getValue()+" "+e.getKey());
        }
        //System.out.println(tm);
    }
}

我会告诉你们其实另外两题编程题我都不会么。。。。~__~

猜你喜欢

转载自blog.csdn.net/xiapi3/article/details/79646742