题解 | #删除字符串中出现次数最少的字符#优雅解法

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

http://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9

优雅解法,使用replaceAll("a","")计算出目标字符出现的次数

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * @author saint
 * @date 2022/6/2
 * @info 删除出现次数最少的字符;优雅永不过时
 **/
public class Main {
    //解题思路:分步完成,第一步记录每个字符出现的次数以及找到最小出现次数,第二步替换目标字符为空格
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        int minCount = str.length();
        int count = 0;
        Map<Character,Integer> map = new HashMap<>();
        char[] arr = str.toCharArray();
        if(arr.length > 0){
            for(int i=0; i<arr.length; i++){
                char c = arr[i];
                if(!map.containsKey(c)){
                    count = str.length() - str.replaceAll(c+"","").length();
                    map.put(c,count);
                    if(count <= minCount){
                        minCount = count;
                    }
                }
            }
            if(map.keySet().size() > 0){
                for (Map.Entry<Character, Integer> entry : map.entrySet()) {
                    Character k = entry.getKey();
                    Integer v = entry.getValue();
                    if (v.equals(minCount)) {
                        str = str.replaceAll(k.toString(), "");
                    }
                }
            }
            System.out.println(str);
        }
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
头像
11-18 16:08
福州大学 Java
影流之主:干10年不被裁,我就能拿别人一年的钱了,日子有盼头了
点赞 评论 收藏
分享
美团 后端开发 总包n(15%是股票)
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务