题目描述
输入描述:
第一行输入整数n.(1<=n<=100)。 以下n行读入n个字符串。
输出描述:
输出读入次数最多的字符串,如果两个字符串读入次数相同输出,”dogfall”。
示例
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str_0 = scan.nextLine().trim();
int n = Integer.parseInt(str_0);
ArrayList<String> vector = new ArrayList<>();
for (int i = 0; i < n; i++){
String str_1 = scan.nextLine().trim();
vector.add(str_1);
}
scan.close();
String result = solution(n, vector);
System.out.println(result);
}
public static String solution(int n, ArrayList<String> vector){
String result = "";
if (vector.size() == 0 || vector.contains("")) {
return "dogfall";
}
HashMap<String, Long> strMap = new HashMap<>((int) (n / 0.75 + 1));
for (String s : vector) {
if (strMap.containsKey(s)) {
Long value = strMap.get(s);
strMap.replace(s, value += 1L);
} else {
strMap.put(s, 1L);
}
}
Collection<Long> values = strMap.values();
Long maxValue = Collections.max(values);
int size = (int) strMap.values().stream().filter(maxValue::equals).count();
if (size == 0 || size > 1) {
result = "dogfall";
} else {
for (Map.Entry<String, Long> entry : strMap.entrySet()) {
if (entry.getValue().equals(maxValue)) {
result = entry.getKey();
}
}
}
return result;
}
}