华为OD机试真题B卷 Java 实现【字符统计】,附详细解题思路

news/2024/10/21 7:29:07/

在这里插入图片描述

一、题目描述

输入一个只包含小写英文字母和数字的字符串,按照不同字符统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASCII码由小到大排序输出。

数据范围:字符串长度满足 1≤len(str)≤1000 。

二、输入描述

一个只包含小写英文字母和数字的字符串。

三、输出描述

一个字符串,为不同字母出现次数的降序表示。若出现次数相同,则按ASCII码的升序输出。

四、解题思路

  1. 从输入中读取字符串;
  2. 将字符串转换为字符数组;
  3. 创建一个大小为129的整型数组chArray,用于统计每个字符的出现次数;
  4. 遍历字符数组,对chArray中对应字符的ASCII码值下标元素进行自增操作,统计字符出现的次数;
  5. 找出chArray数组中的最大值max,即字符出现的最大次数;
  6. 创建一个可变字符序列StringBuilder对象sb,用于存储结果;
  7. 从最大次数开始,依次遍历chArray数组,将出现次数等于当前次数的字符添加到sb中;
  8. 递减最大次数,直到次数为0,完成排序;
  9. 返回StringBuilder对象sb作为结果;

五、Java算法源码

public static void main(String[] args) {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String str;try {while ((str = br.readLine()) != null) {System.out.println(count(str).toString());}} catch (IOException e) {e.printStackTrace();}}public static StringBuilder count(String str) {char[] strArray = str.toCharArray();int[] chArray = new int[129];//字符对应ascll码值下标元素自增来统计数量for (char i : strArray)chArray[(int) i]++;int max = 0;//找出字符数量最多的ascll码值for (int i = 0; i < chArray.length; i++)if (max < chArray[i])max = chArray[i];StringBuilder sb = new StringBuilder();//按数量从大到小添加到可变字符序列sbwhile (max != 0) {for (int i = 0; i < chArray.length; i++)if (chArray[i] == max)sb.append((char) i);max--;}return sb;}

六、效果展示

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【基站维修工程师】【2023Q1 200分】,附详细解题思路

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述


http://www.ppmy.cn/news/106488.html

相关文章

在虚拟机上部署hadoop集群(全流程)

一、单节点部署前置准备 这里一直下一步就好了 接下来需要为该节点固定ip并配置相关网关还有dns解析 这里配置了一个本机dns解析,也配置了一个公网dns解析(主要目的还是为了固定ip

微服务架构打造的供应链系统、采购配送系统,支持SaaS模式

一、开源项目简介 haohan-scm 介绍 基于pig微服务架构打造 供应链系统&#xff0c;采购配送系统。为客户提供仓储管理、订单管理、打单、货源采购、分拣、配送等系统功能。 二、开源协议 使用AGPL-3.0开源协议 三、界面展示 系统截图 四、功能概述 基于pig微服务架构打…

CASA模型:生态系统NPP及碳源、碳汇模拟、土地利用变化、未来气候变化、空间动态模拟

查看原文>>>生态系统NPP及碳源、碳汇模拟、土地利用变化、未来气候变化、空间动态模拟实践技术应用 目录 第一章 CASA模型介绍&#xff08;讲解案例实践&#xff09; 第二章 CASA初步操作 第三章 CASA数据制备&#xff08;一&#xff09; 第四章 CASA数据制备&am…

FinOps云成本管理的新方法

云计算为企业带来了巨大的灵活性和创新机会,但也带来了成本控制的挑战。云服务使企业更容易大规模部署应用程序和服务,但如果不仔细管理,费用可以快速增加。据国际知名厂商Flexera云报告显示&#xff0c;企业云支出浪费平均 30%。 FinOps 是一种新的工作方法,专注于云成本管理…

Three.js教程:对象克隆、复制

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 其他系列工具&#xff1a; NSDT简石数字孪生 对象克隆.clone()和复制.copy() Threejs大多数对象都有克隆.clone()和复制.copy()两个方法,点模型Points、线模型Line、网格网格模型Mesh一样具有这两个方法。 复制方法.copy…

React Native的fragment和JetPack ViewPager2的集成

文章目录 背景原生ViewPage2的代码结构React Native端的实现原生端的实现在Adapter中注册FragmentMainActivity实现DefaultHardwareBackBtnHandler接口 小结 背景 ViewPager2是ViewPager的升级版&#xff0c;在原生Android应用中使用广泛。近期本人项目需要添加一些React Nati…

详解iPaaS与RPA的区别及各自的应用场景

随着企业数字化转型的加速&#xff0c;业务系统集成和自动化流程成为关键议题。本文旨在探讨iPaaS&#xff08;Integration Platform as a Service&#xff09;与RPA&#xff08;Robotic Process Automation&#xff09;在业务系统集成方面的区别&#xff0c;它们各自的用途和适…

【C++初阶】:string类

string 一string的基本用法二.迭代器1.基本使用2.语法糖3.反向迭代器4.const迭代器 三.容量四.插入和删除五.一个例题&#xff1a;解析协议六.读取空格七.一些其他函数 一string的基本用法 文档里 一般使用 二.迭代器 1.基本使用 string里重载了一种非常厉害的运算符[ ] 这个运…