主要是记住删除的字符可能为多个,遍历拿到最小的统计值
删除字符串中出现次数最少的字符
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); } }