当前位置: 首页 > news >正文

【每日一练】20231023

统计每个字符出现的次数相关问题

方法一:map的put方法+遍历

public class Test {

    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("");
        Random ran = new Random();
        for(int i=0;i<2000000;i++) {
            sb.append((char) ('a' + ran.nextInt(27)));
        }
        String str = sb.toString();
        //System.out.println(sb);
        

        //统计一下每个字符出现的次数?出现最多?
        Map<Character, Integer> map = new HashMap<>();
        long s = System.currentTimeMillis();
        for (int i = 0; i < str.length(); i++) {
            Character ch = str.charAt(i);
            if (Objects.isNull(map.get(ch))) {
                map.put(ch, 1);
            } else {
                map.put(ch, map.get(ch) + 1);
            }
        }
        long e = System.currentTimeMillis();
        System.out.println((e-s)+"ms");

        // System.out.println(map);

    }
}

方法二:用数组

public class Test2 {

    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("");  //a-z
        Random ran = new Random();
        for(int i=0;i<2000000;i++) {
            sb.append((char) ('a' + ran.nextInt(26)));
        }
        String str = sb.toString();
//        System.out.println(str);
        int[] chs =new int[26];  //chs[0] chs[25]  0-a, 25-z

        long s = System.currentTimeMillis();
        for(int i =0; i<str.length();i++){
            char c = str.charAt(i);  //if  c is a
            chs[c-'a']+=1;

        }
        long e = System.currentTimeMillis();
        System.out.println((e-s)+"ms");
//
//        for(int i=0;i<chs.length;i++){
//            System.out.print((char)(i+'a')+",");
//            System.out.println(chs[i]);
//        }
        
    }
}

方法三:map的getOrDefault方法

public class Test3 {
    public static void main(String[] args) {
        String str = "The so-called 'multifunctional' is not adding many elements, " +
                "but subtracting them. Only by leaving blank can ten thousand possibilities be created.";

        // 创建HashMap用于存储字母和出现次数
        Map<Character, Integer> countMap = new HashMap<>();

        // 遍历字符串的每个字符
        for (char c : str.toCharArray()) {
            // 判断是否为字母
            if (Character.isLetter(c)) {
                // 将字母转为小写形式
                char lowercase = Character.toLowerCase(c);

                // 更新字母的出现次数,使用Map的getOrDefault方法来获取该字母已有的计数并加一
                countMap.put(lowercase, countMap.getOrDefault(lowercase, 0) + 1);
            }
        }
        // 遍历Map输出每个字母及其出现次数
        for (char c : countMap.keySet()) {
            int count = countMap.get(c);
            System.out.println(c + ": " + count);
        }
    }
    
}

相关文章:

  • 紫光同创FPGA实现PCIE测速试验,提供PDS工程和Linux QT上位机源码和技术支持
  • 报错:The supplied javaHome seems to be invalid. I cannot find the java executable
  • 如何开发一个 Safari 插件
  • flutter开发的一个小小小问题,内网依赖下不来
  • RemObjects Elements 12.0 Crack
  • 【safetensor】Debug
  • 智慧河湖方案:AI赋能水利水务,构建河湖智能可视化监管大数据平台
  • 【Gensim概念】03/3 NLP玩转 word2vec
  • pdf导出实例(itestpdf)
  • android项目实践说明
  • 8.3 C++ 定义并使用类
  • 解决Kafka新消费者组导致重复消费的问题
  • Jmeter(九):jmeter_逻辑控制器与HTTP Cookie管理器详解
  • Node.js的crypto模块 加密
  • Kafka三种认证模式,Kafka 安全认证及权限控制详细配置与搭建
  • notes_NLP
  • Nginx的基本介绍 安装 配置文件 日志
  • 想要查看员工与客户聊天记录和跟进情况,有什么工具推荐吗?
  • 深度解析 Bing 搜索引擎的排名因素与算法
  • TS和JS的区别
  • 澎湃回声丨23岁小伙“被精神病8年”续:今日将被移出“重精”管理系统
  • “即买即退”扩容提质,上海静安推出离境退税2.0版新政
  • 农行一季度净利润719亿元增2.2%,不良率微降至1.28%
  • 王毅:坚持金砖团结合作,改革完善全球治理
  • 恒瑞医药赴港上市获证监会备案,拟发行不超8.15亿股
  • 中日友好医院通报“医师肖某被举报”:基本属实,开除党籍并解聘