删除字符串中字符最少的字符并返回

简介: 删除字符串中字符最少的字符并返回

题目:删除字符串中出现次数最少的字符,如果有多个字符出现次数同为数量最少,则一起删除,最后返回

示例:

1、“abccdede” 返回:“ccdede”

2、“abcabc” 返回:null

3、“” 返回:null

import java.util.*;
public class DeleteStringsMinChar {
    public static void main(String[] args) {
        String str = "abccdede";
        String str2 = "abcabc";
        String str3 = "";
        System.out.println(getResult(str));
        System.out.println(getResult(str2));
        System.out.println(getResult(str3));
    }
    public static String getResult(String str){
        if (str.length() == 0) return null;
        char[] chars = str.toCharArray();
        //存储字符串中字符对应的数量
        HashMap<Character, Integer> charHashMap = new HashMap<Character, Integer>();
        for (char aChar : chars) {
          if (charHashMap.containsKey(aChar)){
              charHashMap.put(aChar, charHashMap.get(aChar) + 1);
          } else {
              charHashMap.put(aChar, 1);
          }
        }
        //存储需要删除的元素
        HashSet<Character> characters = new HashSet<>();
        //存储字符最少的数量
        Integer minLen = Integer.MAX_VALUE;
        Set<Map.Entry<Character, Integer>> entries = charHashMap.entrySet();
        //获取字符串中最小元素数量
        for (Map.Entry<Character, Integer> e : entries) {
            Integer val = e.getValue();
            Character key = e.getKey();
            if (minLen > val) {
                characters.clear();
                minLen = val;
                characters.add(key);
            }else if (minLen == val){
                characters.add(key);
            }
        }
        //剥去需要删除的字符的返回所需字符串
        StringBuffer stringBuffer = new StringBuffer();
        for (char aChar : chars) {
            if (!characters.contains(aChar)){
                stringBuffer.append(aChar);
            }
        }
        return stringBuffer.length() == 0 ? null : stringBuffer.toString();
    }
}

結果:

ccdede
null
null
目录
打赏
0
0
0
0
164
分享
相关文章
|
4月前
判断字符
【10月更文挑战第18天】判断字符。
39 5
|
3月前
删除字符串中的除字母外的字符
【10月更文挑战第31天】删除字符串中的除字母外的字符。
47 4
|
5月前
|
删除一个字符串中的指定字母
删除一个字符串中的指定字母。
51 7
【前缀和】3085. 成为 K 特殊字符串需要删除的最少字符数
【前缀和】3085. 成为 K 特殊字符串需要删除的最少字符数
7-121 删除字符串中的子串
7-121 删除字符串中的子串
84 0
C/C++编程题之删除字符串中出现次数最少的字符
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
判断字符串中只含有字母和问题
判断字符串中只含有字母和问题
83 0
第一个只出现一次的字符
第一个只出现一次的字符
54 0

热门文章

最新文章