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

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

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

示例:

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
相关文章
|
8月前
|
SQL 运维 数据库
根据某个特定字符删除一行
根据某个特定字符删除一行
|
4月前
|
C++
C/C++判断字符串是否为另一字符串的子字符串
C/C++判断字符串是否为另一字符串的子字符串
54 0
|
7月前
|
C语言 C++
从字符串中删除指定字符
从字符串中删除指定字符
|
11月前
7-121 删除字符串中的子串
7-121 删除字符串中的子串
43 0
|
11月前
实现一个函数,可以左右旋字符串中的k个字符
实现一个函数,可以左右旋字符串中的k个字符 ABCD左旋一个字符得到BCDA ABCD左旋两个字符的到CDAB ABCD右旋一个字符得到DABC ABCD右旋两个字符的到CDAB
C/C++编程题之删除字符串中出现次数最少的字符
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
判断字符串中只含有字母和问题
判断字符串中只含有字母和问题
56 0
第一个只出现一次的字符
第一个只出现一次的字符
34 0
772. 只出现一次的字符 ---- 给你一个只包含小写字母的字符串。请你判断是否存在只在字符串中出现过一次的字符
给你一个只包含小写字母的字符串。 请你判断是否存在只在字符串中出现过一次的字符。 如果存在,则输出满足条件的字符中位置最靠前的那个。
228 0
|
人工智能 BI
762 字符串匹配----给定两个长度相同的字符串 a 和字符串 b。如果在某个位置 i 上,满足字符串 a 上的字符 a[i] 和字符串 b 上的字符 b[i] 相同,那么这个位置上的字符就是匹配
给定两个长度相同的字符串 aa 和字符串 bb。 如果在某个位置 ii 上,满足字符串 aa 上的字符 a[i]a[i] 和字符串 bb 上的字符 b[i]b[i] 相同,那么这个位置上的字符就是匹配的。 如果两个字符串的匹配位置的数量与字符串总长度的比值大于或等于 kk,则称两个字符串是匹配的。
208 0

热门文章

最新文章