各大公司公开了的笔试面试题练习之网易游戏2016“运营开发工程师”在线测评题wordcount解答
全部代码下载:
Github链接:https://github.com/wpeace1212/Coder/tree/master/Code/netease
写文章不易,欢迎大家采我的文章,以及给出有用的评论,当然大家也可以关注一下我的github;多谢;
##题目1.wordcount
时间限制:
2000ms
单点时限:
1000ms
内存限制:
256MB
-
4 SQL DW SQL AS DW AB SQL
样例输出
-
SQL 3 DW 2 AB 1 AS 1
描述
有一篇文章只包含英文单词,请按它们的出现次数排序,出现最多的先输出;如果出现次数相等的,按字符串ASCII排序升序输出。
输入
第一行会是行数N( 0 < N <= 500)。
之后N行中的每行会是一个或多个英文单词。
数据总大小不超过100K。
输出
输出:
<单词1><空格><次数1>
<单词2><空格><次数2>
2.我的理解:
- 单词计数
用map计数是比价简便也容易想到的不是难点
- 排序
关键是对建单词和值次数进行排序,需要想到关键性的Entry获得键值对,然后进行排序就简单了。
3.我的代码:
package com.netease.yunyin;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class WordCount {
public static void main(String[] args) {
//获得输入
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//将单词和次数存成键值对
Map<String, Integer>words=new HashMap<>();
//行数
int n=0;
try {
//行数获得
n= Integer.parseInt(br.readLine());
} catch (NumberFormatException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
//处理输入:
while(true){
try {
//按行处理
String lin=br.readLine();
n--;
//对每一行的单词单独处理
String[] strings = lin.split("\\s");
for(String k:strings){
//判断计数
if(!"".equals(k)&&words.get(k)!=null){
int wordCount=words.get(k);
words.put(k,wordCount+1);
}else if(k!=null&&!"".equals(k)){
words.put(k, 1);
}
}
} catch (IOException e) {
e.printStackTrace();
}
//处理完所有行时,跳出
if(n<1)break;
}
//获得Map的键值对并存到Entry
List<Entry<String, Integer>> sortList=new ArrayList<>(words.entrySet());
//进行排序,实现Comparator接口
Collections.sort(sortList, new Comparator<Entry<String, Integer>>() {
@Override
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
//次数大的放前面
if(o1.getValue()>o2.getValue())
return -1;
//次数相同的按,单词排序
else if(o1.getValue()==o2.getValue())
return o1.getKey().compareTo(o2.getKey());
return 0;
}
});
//循环输出:
for(Entry<String, Integer> e:sortList){
System.out.println(e.getKey()+" "+e.getValue());
}
}
}
4.我的测试结果:
好的本章介绍到这里
来自伊豚wpeace(rlovep.com)