7-32 找到出勤最多的人-hebust (15 分)
根据教师的花名册,找到出勤最多的人。
输入格式:
出勤记录单行给出,数据直接使用空格分割。
输出格式:
单行输出(若有多人,人名直接使用空格分割,结尾处没有空格)。
输入样例:
在这里给出一组输入。例如:
zs ls ww ml zs ls ml zs ww
输出样例:
在这里给出相应的输出。例如:
zs
参考答案
import java.util.*;
class Main{
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
Map<String, Integer> map = new TreeMap();
TreeSet ts = new TreeSet();
int max = 0;
String str_name = cin.nextLine();
String []name_str = str_name.split(" ");
for( int i = 0; i < name_str.length; i ++ ){
int t = ts.size();
ts.add(name_str[i]);
if( t == ts.size() ){ // 表示有重复
if ( map.get(name_str[i]) + 1 > max){
max = map.get(name_str[i]) + 1;
}
map.put( name_str[i], map.get(name_str[i]) + 1); // 更新map中的值
}
else{
map.put(name_str[i], 1 );
}
}
String []cnt_name_people = new String[ts.size()];
int cnt = 0;
for( Map.Entry<String, Integer> entry: map.entrySet()){
String key = entry.getKey();
int value = entry.getValue();
if( max == 0){// 全部出勤1次,特殊情况
cnt_name_people[cnt ++ ] = key;
}
else if( value == max ){
cnt_name_people[cnt ++ ] = key;
}
}
for( int i = 0; i < cnt - 1; i ++ ){
System.out.print(cnt_name_people[i] + " ");
}
System.out.println(cnt_name_people[cnt -1 ]);
cin.close();
}
}