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

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

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

全部评论

相关推荐

07-30 13:50
门头沟学院 Java
点赞 评论 收藏
分享
06-10 18:55
已编辑
西安电子科技大学 Java
只管努力就好:恭喜恭喜恭喜,我都没有面试机会,上周被压力炸了,今天中午看页面显示被捞进入评估结果下午就没了
京东三面373人在聊
点赞 评论 收藏
分享
竟然收到了测评听说是双机位
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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