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

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

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

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        Map<Character, Integer> map = new HashMap<>();
	  //将字符串中出现的字母作为map的key,value为这个字母的出现次数
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            if (map.containsKey(ch)) {
                int value = map.get(ch);
                value++;
                map.put(ch, value);
            } else {
                map.put(ch, 1);
            }
        }
		//这里将map转成List集合,这样就可以通过比较value的大小进行排序
        List<Map.Entry<Character, Integer>> list = new ArrayList<>(map.entrySet());
        Collections.sort(list, ((o1, o2) ->  o1.getValue() - o2.getValue()));
	  	//list排完序之后,第一个就是最小值,用minCount来接收
        int minCount = list.get(0).getValue();
	  	//这里是要遍历删除出现次数最少的字母
        for (Map.Entry<Character, Integer> entry : list) {
            if (minCount < entry.getValue()) {
                break;
            }
            char ch = entry.getKey();
            String delStr = "";
            int delIndex = 0;
            for (int i = 0; i < str.length(); i++) {
                if (str.charAt(i) == ch) {
                    delStr = delStr + str.substring(delIndex, i);
                    delIndex = i + 1;
                }
            }

            if (delIndex < str.length() - 1) {
                delStr = delStr + str.substring(delIndex, str.length());
            }

            str = delStr;

        }
        System.out.println(str);
    }
}

全部评论

相关推荐

11-03 14:38
重庆大学 Java
AAA求offer教程:我手都抬起来了又揣裤兜了
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务