網易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);
    }
}

我會告訴你們其實另外兩題編程題我都不會麼。。。。~__~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章