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());
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>