java 查找一个字符串中每个字符出现的次数,打印输出

记录一个查询字符串相关的算法题目
给定一个字符串"ababcda",输出每次字符出现的次数;要求按照顺序输出;
结果应该是:3a2b1c1d

思路:
1.将字符串转换为字符串数组;
2.遍历数组放置linkedhashmap,利用map的key唯一性
3.遍历map,利用stringBuilde拼接字符串输出;

public static void main(String[] args) {
        String str = "ababcda";
        String [] strArray= str.split("");
        //为了保证顺序,使用LinkedHashMap,不能使用HashMap
        Map<String,Integer> map= new LinkedHashMap<>(strArray.length);
        for (String s : strArray) {
            Integer value=map.get(s);
            if(value==null){
                map.put(s,1);
            }else{
                map.put(s,value+1);
            }
            //上述for循环内部代码可替换为如下一行
            //map.merge(s, 1, Integer::sum);
        }
        Set<Map.Entry<String, Integer>> set=map.entrySet();
        //StringBuilder提升拼接性能
        StringBuilder stringBuilder=new StringBuilder();
        set.forEach(item->{
            stringBuilder.append(item.getValue()).append(item.getKey());
        });
        System.out.println(stringBuilder.toString());
    }
发布了62 篇原创文章 · 获赞 29 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/csdn_20150804/article/details/98789860
今日推荐