java统计字符串中重复【单个】字符的次数频次-使用字符数组实现

思路:单个字符char的编码可以直接用做int值作为数组索引,遍历字符串,字符数组[字符编码的int值]自增,貌似不是很完善

public class Test {

    public static void main(String[] args) {

        String str = "sdfjklsajfoiwernjkwnerkwndfs";
        count(str);
        String str2 = "你我他他他我是好的你说是我";
        count(str2);
    }

    public static void count(String str) {
        System.out.println("待统计字符:" + str);
        System.out.println("字符数组统计");
        char[] count = new char[50000];//【考虑字符编码的最大值】

        for (int i = 0; i < str.length(); i++) {
            count[str.charAt(i)] = (char) (count[str.charAt(i)] + 1);//str.charAt(i)返回的char直接作为索引

        }
        toenum(count);
    }

    public static void toenum(char[] count) {

        for (int i = 0; i < count.length; i++) {
            if (count[i] > 0) {
                char c = (char) i;//int转char
                int ci = count[i];//char转int
                System.out.println("字符:" + c + " 编码:" + i + " 频次:" + ci);
            }
        }
    }

}

然后把count字符数组存入map,再转list排序,
参考:java【通用】统计字符串中重复【单个】字符的次数频次并输出重复最多的次数和字符

  1. 不能使用Arrays.sort(count)(只对值排序,破坏索引)
  2. 可以遍历转存list排序,过滤掉无用的数组
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值