判断一个字符串中各个字符出现的次数

2023-11-03

我这里使用了两种方法,两种方法思路差不多,但是使用处理字符串的方法不一样,所以执行效率不一样
long xxx=System.nanoTime(); 这个方法用来标记执行方法前后的时间点,看最终执行完所用时间(纳秒)
第一种方法效率高,时间快(不是我一开始想的方法)
第二种方法效率低一点,时间慢,大概是第一种方法的三倍时间左右

思路:
将字符串拆成单个字符,然后作为key存在map中,map中已经存在key那就value+1,不存在key那就put(key,1)

第一种方法

    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        String str=scanner.next();

        String str="hsahdjkabshjcbakhiuhsadna";
        long start=System.nanoTime();
        HashMap<Character,Integer> map = new HashMap<>();
        for (char arr:str.toCharArray()){
            if (map.containsKey(arr)){
                Integer value=map.get(arr)+1;
                map.put(arr,value);
            }else{
                map.put(arr,1);
            }
        }

        for (Map.Entry<Character,Integer> i:map.entrySet()){
            System.out.println(i);
        }

        long end=System.nanoTime();

        System.out.println(end-start);

    }

第二种方法

    public static void main(String[] args) {
        
//        Scanner scanner = new Scanner(System.in);
//        String str=scanner.next();
        String str="hsahdjkabshjcbakhiuhsadna";
        long start=System.nanoTime();
        String[] array=str.split("");
        HashMap<String,Integer> map = new HashMap<>();
        for (String arr:array){
            if (map.containsKey(arr)){
                Integer value=map.get(arr)+1;
                map.put(arr,value);
            }else{
                map.put(arr,1);
            }
        }
        for (Map.Entry<String,Integer> i:map.entrySet()){

            System.out.println(i);
        }
        long end=System.nanoTime();

        System.out.println(end-start);
        
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

判断一个字符串中各个字符出现的次数 的相关文章

随机推荐

  • 半径为r的均匀带电球体_放于真空中半径为R,带电量为q的均匀带电球体,求球内外各点电势分布...

    展开全部 当半径r 一个均匀带电的球壳 带电量为q 则e68a84e8a2ad62616964757a686964616f31333431353338对壳外部产生的场强为E q 4 r 内部场强为零 则以上均匀带电的球内半径为r处 电场强度
  • C语言删除字符串中某一指定字符

    include
  • Python数据挖掘和解析算法

    机器学习是计算机科学的一个分支 它利用过去的经验来学习并利用其知识来做出未来的决策 机器学习是计算机科学 工程和统计学的交叉点 机器学习的目标是概括一个可检测的模式或从给定的例子中创建一个未知的规则 机器学习领域的概述如下 监督学习 这是教
  • 11.3外汇黄金价格投资策略、期货原油最新价格布局及指导

    黄金消息面与技术面解析 消息面 周二 11月2日 国际金价持稳 在通胀压力不断增加以及对经济增长放缓的担忧之际 市场参与者等待美联储本周政策会议结果 美国物价和薪资涨幅正处于数十年来的高位 本周可能让美联储官员面临挑战 分析师预计 在央行收
  • STM32串口烧写程序

    STM32烧写注意 1 必须使用串口1烧写 2 烧写 BOOT0置1 BOOT1置0 运行 BOOT0置0 BOOT1置任意 3 使用FLYMCU烧写软件 4 NRST引脚电路设计成悬空 按键按下 拉低 步骤 1 买一根 TTL串口线分别把
  • 全国各省、市、区(sql语句)

    文章目录 一 省份 数据表 二 市 数据表 注意 因为到县sql语句太多文章限字数上传不全 所以一半放到了另外的一篇文章上 三 上部分区 县 数据表 四 中部分区 县 数据表 五 下部分区 县 数据表 六 在在下部分区 县 数据表 返回项目
  • 股票分析,利用线性回归实时预测股价,只需要提供股票代码即可爬取相应股票数据并建模

    这里参考了别人的代码 并引用了tushare模块中定义的接口自动获取了依据 股票代码来获取数据 此篇文章提供了 1 一个简单通过接口爬取csv数据的方法 2 一个处理csv数据的简单方法 3 依据数据进行特征提取建立简单的股价预测模型 如下
  • 关于Pygame运行无响应问题的办法(已解决)

    目录 pygame程序运行时需要初始化 在关闭运行页面的时候无响应 pygame程序运行时需要初始化 如下代码运行后无反应 import sys import pygame size width height 600 400 screen
  • 华为机试2016

    编程题 最高分是多少 老师想知道从某某同学当中 分数最高的是多少 现在请你编程模拟老师的询问 当然 老师有时候需要更新某位同学的成绩 输入描述 输入包括多组测试数据 每组输入第一行是两个正整数N和M 0 lt N lt 30000 0 lt
  • 1.5.1 AlexNet

    目录 五 AlexNet 5 1 ReLU 激活函数 5 2 局部响应正则化 5 3 数据增强 5 4 Dropout 5 5 网络整体架构 5 6 小结 五 AlexNet AlexNet 是 2012 年第 3届 ILSVRC Imag
  • 【postgresql 基础入门】创建数据库的方法,存储位置,决定自己的数据的访问用户和范围

    创建数据库 专栏内容 postgresql内核源码分析 手写数据库toadb 并发编程 开源贡献 toadb开源库 个人主页 我的主页 管理社区 开源数据库 座右铭 天行健 君子以自强不息 地势坤 君子以厚德载物 系列文章 入门准备 pos
  • Qt

    Qt QListWidgetItem返回错误的背景颜色 始终返回颜色值为0 问题解决 使用场景 程序使用QListWidget显示一个列表 这个列表具有点击选择和再次点击取消选择的功能 点击之后需要更换背景色以表示被选中 由于软件有主题效果
  • Js动态加载CSS样式文件的2种方法

    动态加载CSS文件 这个时常会用到 一般搞前端 我们最先想到的就是用JS来实现 的确 JS可以很方便的控制CSS样式表文件的动态插入 以下两种方法 使用 一 使用 这点采用了YUI插件中的一个方法 有效解决了各大浏览器的兼容性问题 主要是使
  • 面试经典(25)--二叉查找树(搜索树)

    二叉搜索树是经典的数据结构 本文来总结一下二叉搜索树的插入和删除算法 插入算法 struct Node int key struct Node parent struct Node left struct Node right struct
  • Elasticsearch实战(三)---复杂数据结构及映射 Mapping操作

    Elasticsearch实战 复杂数据结构及映射 Mapping操作 文章目录 Elasticsearch实战 复杂数据结构及映射 Mapping操作 1 ElasticSearch 映射操作 1 1 结构 1 2 映射 1 3 映射 显
  • CentOS8安装keepalived和lvs遇到的坑

    CentOS8 最小化安装 关闭selinux 两个负载yum 安装keepalived 和ipvsadm 一 没有配置ip forward lvs用DR模式不用 二 没有配置虚拟IP 只在keepalived配置中写的 前期是没有会配置虚
  • Java七大设计原则 - 接口隔离原则

    一 什么是 接口隔离原则 Interface Segregation Principle 原则含义 一个类对于另外一个类的依赖应该建立在最小的接口上 1 接口隔离原则 实际上它是建立在另一种设计原则之上 依赖倒置 的 即 面向接口编程 而
  • 【C++】C++封装成DLL并调用(初学者快速入门)

    话不多说 干货走起 侵删 使用vs2019将C 封装成DLL并调用主要有以下几个步骤 1 新建工程 编写要封装的 cpp和 h文件 2 生成动态链接库 dll和静态链接库 lib 3 调用通过 h文件调用 第一步 编写 cpp和 h文件 本
  • Linux中vi的用法

    vi 有三种工作模式 普通模式 1 输入模式 2 命令模式 3 末行模式 ese 退出到普通模式 输入模式 a 光标处的后面切换到输入 A 光标跳转到当前行的最末端 i 光标处的前面输入 I 光标跳到当前行的最前端 r 替换光标处的一字母
  • 判断一个字符串中各个字符出现的次数

    我这里使用了两种方法 两种方法思路差不多 但是使用处理字符串的方法不一样 所以执行效率不一样 long xxx System nanoTime 这个方法用来标记执行方法前后的时间点 看最终执行完所用时间 纳秒 第一种方法效率高 时间快 不是