主要是记住删除的字符可能为多个,遍历拿到最小的统计值
删除字符串中出现次数最少的字符
https://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
char[] chars = str.toCharArray();
Map<Character, Integer> hashMap = new HashMap<>();
// 统计每个字符出现的次数
for (int i = 0; i < chars.length; i++) {
if (hashMap.get(chars[i]) == null) {
hashMap.put(chars[i], 1);
} else {
hashMap.put(chars[i], hashMap.get(chars[i]) + 1);
}
}
Integer min = 1;
Integer oneNum = 0;
// 拿到最小的字符出现次数
for (Map.Entry<Character, Integer> entry : hashMap.entrySet()) {
Integer minCount = entry.getValue();
oneNum++;
if (oneNum == 1){
min = minCount;
}else {
if (minCount - min < 0){
min = minCount;
}
}
}
ArrayList<Character> list = new ArrayList<>();
// 注意最小的出现次数的字符可能为多个,如'b','c',都要删除
for (Map.Entry<Character, Integer> entry : hashMap.entrySet()) {
Integer minCount = entry.getValue();
if (min == minCount){
list.add(entry.getKey());
}
}
// 删除字符
for (Character c : list) {
str = str.replaceAll(c + "", "");
}
System.out.println(str);
}
}

查看10道真题和解析