import java.util.*;
public class P1125_NOIP2008提高组_笨小猴 {
public static boolean isPrime(int n) {
if (n == 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0)
return false;
}
return true;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
HashMap<Character, Integer> hm = new HashMap<>(); // 哈希表的查找是 O(1),字母本身是不重复,设置为key
// 字母出现的次数不停加1,设为value
String s = sc.nextLine();
class WordList { // 不能在哈希表中排序,自定义单词表类,方便之后对 count 的排序
char word;
int count;
}
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (hm.containsKey(c)) {
hm.put(c, hm.get(c) + 1); // 哈希表重新设置value
} else {
hm.put(c, 1);
}
}
WordList[] w = new WordList[hm.size()];
Iterator<Map.Entry<Character, Integer>> entries = hm.entrySet().iterator(); // 迭代器放在循环外面
for (int i = 0; i < hm.size(); i++) {
w[i] = new WordList(); // 自定义类的每次使用都要初始化
if (entries.hasNext()) {
Map.Entry<Character, Integer> entry = entries.next(); // Map.Entry是一个键值对,entries是键值对的集合
w[i].word = entry.getKey();
w[i].count = entry.getValue();
}
}
Arrays.sort(w, new Comparator<WordList>() {
@Override
public int compare(WordList o1, WordList o2) {
return o2.count - o1.count; // 比较器 对 count 字段按降序排序
}
});
int div = w[0].count - w[w.length - 1].count;
if (div == 0) {
System.out.println("No Answer");
System.out.println(div);
} else {
if (isPrime(div)) {
System.out.println("Lucky Word");
System.out.println(div);
} else {
System.out.println("No Answer");
System.out.println(0);
}
}
}
}
【洛谷】P1125 笨小猴
最新推荐文章于 2025-04-30 11:28:26 发布