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

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

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

示例:

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
相关文章
|
24天前
判断字符
【10月更文挑战第18天】判断字符。
28 5
|
2月前
|
开发框架 .NET 程序员
C# 去掉字符串最后一个字符的 4 种方法
在实际业务中,我们经常会遇到在循环中拼接字符串的场景,循环结束之后拼接得到的字符串的最后一个字符往往需要去掉,看看 C# 提供了哪4种方法可以高效去掉字符串的最后一个字符
282 0
|
11天前
删除字符串中的除字母外的字符
【10月更文挑战第31天】删除字符串中的除字母外的字符。
22 4
|
2月前
|
存储
删除一个字符串中的指定字母
删除一个字符串中的指定字母。
33 7
|
6月前
|
索引 容器
06-数据容器str(字符串)-字符串的下标索引/字符串无法修改/查找字符串下标初始值/字符串的替换/字符串的分割/字符串去除前后空格/统计字符串的数量/字符串的循环遍历/对字符串进行分割
06-数据容器str(字符串)-字符串的下标索引/字符串无法修改/查找字符串下标初始值/字符串的替换/字符串的分割/字符串去除前后空格/统计字符串的数量/字符串的循环遍历/对字符串进行分割
|
SQL 运维 数据库
根据某个特定字符删除一行
根据某个特定字符删除一行
|
11月前
|
C++
C/C++判断字符串是否为另一字符串的子字符串
C/C++判断字符串是否为另一字符串的子字符串
135 0
|
C语言 C++
从字符串中删除指定字符
从字符串中删除指定字符
120 2
C/C++编程题之删除字符串中出现次数最少的字符
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
判断字符串中只含有字母和问题
判断字符串中只含有字母和问题
72 0