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

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

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

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

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String str = in.next();
            String result = removeMinCharacter(str);
            System.out.println(result);
        }
    }

    public static String removeMinCharacter(String str){
        Set<Character> targetCharacterSet = obtainMinCharacter(str);
        return removeTargetCharacter(str,targetCharacterSet);
    }

    public static Set<Character> obtainMinCharacter(String str){
        Map<Character,Integer> map = groupByCharacter(str);
        return doObtainMinCharacter(map);
    }

    public static Set<Character> doObtainMinCharacter(Map<Character,Integer> map){
        Set<Character> targetCharacterSet = new HashSet<>();
        int minValue = Integer.MAX_VALUE;
        Set<Character> keys = map.keySet();
        for (Character key : keys) {
            int value = map.get(key);
            if (value <= minValue){
                minValue = value;
            }
        }
        for (Character key : keys) {
            int value = map.get(key);
            if (value == minValue){
                targetCharacterSet.add(key);
            }
        }
        
        return targetCharacterSet;
    }

    public static Map<Character,Integer> groupByCharacter(String str){
        char[] charArr = str.toCharArray();
        Map<Character,Integer> map = new HashMap<>();
        for(int i = 0;i < charArr.length; i++){
            int value = map.getOrDefault(charArr[i],0);
            ++ value;
            map.put(charArr[i],value);
        }
        return map;
    }

    public static String removeTargetCharacter(String str,Set<Character> targetCharacterSet){
        String result = str;
        for (Character targetCharacter : targetCharacterSet){
            result = result.replaceAll(String.valueOf(targetCharacter),"");
        }
        return result;
    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
04-06 16:59
已编辑
河南工业大学 Java
牛牛牛的牛子:最好扔了,实在没有选择的选择
点赞 评论 收藏
分享
Yki_:以下条件优先录用: 喜欢去缅北当猪仔的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务