华为OD机试题【字符统计】【2023 B卷 100分】

news/2024/9/29 5:25:55/

在这里插入图片描述

文章目录

  • 🎯 前言
  • 🎯 题目描述
  • 🎯 解题思路
    • 📙 Python代码实现
    • 📗 Java代码实现
    • 📘 C语言代码实现


🎯 前言

🏆 《华为机试真题》专栏含2023年牛客网面经、华为面经试题、华为OD机试真题最新试题。

🏆 华为机试有三道题,第一道和第二道属于简单题,分值为100分,第三道为困难题,分值为200分,总分400分,150分钟考试时间。

🏆 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议!

🎯 题目描述

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

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

输入描述:
一个只包含小写英文字母和数字的字符串。

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

🎯 解题思路

题目要求按照不同字符统计次数,并按照次数从多到少输出,如果次数相同,则按照字符ASCII码从小到大输出。可以参考以下步骤实现:

  1. 首先,统计每个字符出现的次数,可以使用一个字典来存储,key为字符,value为出现的次数;
  2. 然后,按照出现次数从多到少排序,可以使用一个列表来存储结果,每个元素是一个元组,第一个元素是字符,第二个元素是出现的次数;
  3. 如果出现次数相同,按照字符ASCII码从小到大排序。需要定义一个比较器函数(可以使用lambda表达式),按照题目要求排序;
  4. 最后,遍历排序后的列表,按照题目要求输出结果。

📙 Python代码实现

s = input().strip()# 统计字符出现次数
cnt = {}
for c in s:cnt[c] = cnt.get(c, 0) + 1# 按照出现次数和字符ASCII码排序
result = sorted(cnt.items(), key = lambda x: (-x[1], ord(x[0])))# 输出结果
for c, t in result:print(c, t)

📗 Java代码实现

import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String s = scanner.nextLine().trim();// 统计字符出现次数Map cnt = new HashMap < > ();for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);cnt.put(c, cnt.getOrDefault(c, 0) + 1);}// 按照出现次数和字符ASCII码排序List > list = new ArrayList < > (cnt.entrySet());Collections.sort(list, new Comparator > () {@Overridepublic int compare(Map.Entry o1, Map.Entry o2) {if (o1.getValue() != o2.getValue()) {return o2.getValue() - o1.getValue();} else {return o1.getKey() - o2.getKey();}}});// 输出结果for (Map.Entry entry: list) {System.out.println(entry.getKey() + " " + entry.getValue());}}
}

📘 C语言代码实现

#include
#include
#include#define MAXN 1000int cmp(const void * a,const void * b) {char x = * ((char * ) a), y = * ((char * ) b);if (cnt[x] != cnt[y]) {return cnt[y] - cnt[x];} else {return x - y;}
}int main() {char s[MAXN + 1];fgets(s, MAXN + 1, stdin);int n = strlen(s) - 1;// 统计字符出现次数memset(cnt, 0, sizeof(cnt));for (int i = 0; i < n; i++) {char c = s[i];cnt[c] ++;}// 按照出现次数和字符ASCII码排序char chars[MAXN];for (int i = 0; i < n; i++) {chars[i] = s[i];}qsort(chars, n, sizeof(char), cmp);// 输出结果for (int i = 0; i < n; i++) {if (i > 0 && cnt[chars[i]] == cnt[chars[i - 1]]) {continue;}printf("%c %d\n", chars[i], cnt[chars[i]]);}return 0;
}

在这里插入图片描述

📭 本专栏包含了最新最全的2023年 华为OD机试真题,有详细的分析和解答。


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

相关文章

leetcode 1009. 十进制整数的反码

题目描述解题思路执行结果 leetcode 1009. 十进制整数的反码. 题目描述 十进制整数的反码 每个非负整数 N 都有其二进制表示。例如&#xff0c; 5 可以被表示为二进制 "101"&#xff0c;11 可以用二进制 "1011" 表示&#xff0c;依此类推。注意&#xff0c…

MySQL数据库学习笔记(九)实验课六之触发器和存储过程

没想到这就是最后一次实验了。 一点知识&#xff1a; 道具 – delimiter / DELIMITER 这是用于指定语句分隔符的特殊命令 默认情况下&#xff0c;MySQL使用分号&#xff08;;&#xff09;作为语句的结束符。然而&#xff0c;当我们需要定义存储过程、触发器或函数等包含多条S…

如何使用python的 Pyecharts库 制作 GDP 动态柱状图?

部分数据来源:ChatGPT 引言 如果你正在寻找一种可视化大规模数据集的方法,那么 Pyecharts 库可能是你的不二选择之一。Pyecharts 封装了常用的 Echarts 模板,并提供了一些简单易用的 API 来绘制各种类型的图表。 本文将介绍如何使用 Pyecharts 生成一个 GDP 动态柱状图。我…

插件探索:RoboAd、paxiai 和 Xpapers_arXiv_paper_database

引言 在这篇文章中&#xff0c;我们将探索三个有趣且实用的插件&#xff1a;RoboAd、paxiai 和 Xpapers_arXiv_paper_database。这些插件分别用于创建文本广告、搜索 AI 工具和在 arXiv 数据库中搜索学术论文。让我们深入了解每一个插件&#xff0c;并通过实例来展示它们的使用…

group policy client 服务未能登录拒绝访问解决方案

[b]group policy client 服务未能登录拒绝访问解决方案[/b] 问题介绍: win7系统中出现 group policy client 服务未能登录。拒绝访问。造成无法正常登录帐户。点击确认后自动注销回到登录界面(循环反复),如果进入安全模式中进行尝试启用group policy client服务,则启用处全…

java知识点

必会知识点 是什么 在哪里用&#xff0c;怎么用&#xff0c;遇到了什么问题 绿色&#xff1a;看到问题想到代码 黄色&#xff1a;知道理论不知道代码 红色&#xff1a;没有听过 一&#xff0e;Corejava 【】 1.jdk ,jre,jvm的区别: jdk:Java 开发工具包&#xff08;JRE编译工…

软件驱动安装在docker_nvidia-docker2配置与NVIDIA驱动安装

要运行高版本的GPU版TensorFlow&#xff0c;需要更新宿主机的显卡驱动(本文以NVIDIA390为例) 一、更新驱动 禁用nouveau驱动&#xff1a; 添加/etc/modprobe.d/blacklist.conf文件 blacklist nouveau options nouveau modeset0 “sudo update-initramfs -u” 执行“lsmod | gre…

2021-07-18

#更改数据库 完成每个组的数据库合并且整合后的数据库 /* Navicat Premium Data Transfer Source Server : xmsx Source Server Type : MySQL Source Server Version : 80025 Source Host : localhost:3306 Source Schema : xmsx Target Server Type : MySQL Target Server V…