栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java实现获取根据字母出现频率排序的字符串 aaddccdc ->2a3c3d -> dca

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java实现获取根据字母出现频率排序的字符串 aaddccdc ->2a3c3d -> dca

代码如下:

import java.util.*;

public class GetOrderedStr {
    public static void main(String[] args) {
        String testStr="aaddccdc";
        String orderedStr = getOrderedStr(testStr);
        System.out.println(orderedStr);
    }

    
    public static String getOrderedStr(String srcStr){
        if (srcStr==null || srcStr.trim().length()==0){
            System.out.println("输入的字符串为空!");
            return null;
        }
        int length = srcStr.length();
        if (length>1000){
            System.out.println("输入的字符串长度超过1000!");
            return null;
        }

        //{a=2, c=2, d=3, f=3, m=9}
        HashMap characterCntHashMap = new HashMap<>();
        for (int i = 0; i < length; i++) {
            char charTemp = srcStr.charAt(i);
            if (characterCntHashMap.containsKey(charTemp)){
                characterCntHashMap.put(charTemp,characterCntHashMap.get(charTemp)+1);
            }else {
                characterCntHashMap.put(charTemp,1);
            }
        }

        System.out.println(characterCntHashMap);

        //4a3c2d3m
        TreeSet treeSet = new TreeSet<>();
        for (Map.Entry entry : characterCntHashMap.entrySet()){
            Character charKey = entry.getKey();
            Integer charCnt = entry.getValue();

            //2d3c3m4a
            String cntKeyStr = String.valueOf(charCnt);
            cntKeyStr+=charKey;
            treeSet.add(cntKeyStr);
        }

        System.out.println(treeSet);

        StringBuilder stringBuilder = new StringBuilder();
        for (String s : treeSet) {
            stringBuilder.append(s);
        }

        String treeSetStr = stringBuilder.toString();

        System.out.println(treeSetStr);

        int length1 = treeSetStr.length();
        HashMap stringIntegerHashMap = new HashMap<>();
        LinkedHashSet linkedHashSet = new LinkedHashSet<>();
        for (int i = length1-1; i >= 0; i--) {
            char tempChar = treeSetStr.charAt(i);
            if (Character.isDigit(tempChar)){
                if (stringIntegerHashMap.containsKey(tempChar)){
                    stringIntegerHashMap.put(tempChar,stringIntegerHashMap.get(tempChar)+1);
                }else {
                    stringIntegerHashMap.put(tempChar,1);
                }
                continue;
            }
            linkedHashSet.add(tempChar);
        }

        for (Map.Entry entry : stringIntegerHashMap.entrySet()){
            Character charKey = entry.getKey();
            Integer integerValue = entry.getValue();
            if (integerValue>1){

            }
        }
        System.out.println(linkedHashSet);

        StringBuilder stringBuilder1 = new StringBuilder();
        for (Character character : linkedHashSet) {
            stringBuilder1.append(character);
        }
        return stringBuilder1.toString();
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/915342.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号