主要是记住删除的字符可能为多个,遍历拿到最小的统计值

删除字符串中出现次数最少的字符

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);

    }
}

全部评论

相关推荐

太难了,双9bg也被刷
投递韶音科技等公司10个岗位
点赞 评论 收藏
分享
机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务