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

在这里插入图片描述

文章目录

  • 🎯 前言
  • 🎯 题目描述
  • 🎯 解题思路
    • 📙 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 > () {@
            Override
            public 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 1000

int 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机试真题,有详细的分析和解答。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/26117.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【快应用】多语言适配案例

【关键词】 多语言&#xff0c;$t 【问题背景】 快应用平台的能力会覆盖多个国家地区&#xff0c;平台支持多语言的能力后&#xff0c;可以让一个快应同时支持多个语言版本的切换&#xff0c;开发者无需开发多个不同语言的源码项目&#xff0c;避免给项目维护带来困难。使用系…

《Datawhale南瓜书》出第二版啦!

Datawhale干货 作者&#xff1a;Datawhale开源项目团队 作为机器学习的入门经典教材&#xff0c;周志华老师的《机器学习》&#xff0c;自2016年1月底出版以来&#xff0c;首印5000册一周售罄&#xff0c;并在8个月内重印9次。先后登上了亚马逊&#xff0c;京东&#xff0c;当…

[数据集][目标检测]目标检测数据集绝缘子缺陷防震锤1688张5类别VOC格式

数据集格式&#xff1a;Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;1688 标注数量(xml文件个数)&#xff1a;1688 标注类别数&#xff1a;5 标注类别名称:["flashover",&…

00): Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)

好久没有使用数据库&#xff0c; 连接数据库报上面的错误&#xff0c;尝试了网上的方法还是没有成功&#xff0c;思索之后想起之前手动关闭了mysql的服务&#xff0c;Windows启动时mysql服务不会自动启动&#xff0c;成功启动mysql服务后再次连接数据库&#xff0c;正常连接。 …

PGXC GaussDB

PGXCA PGXC&#xff08;PostgreSQL eXtended Coordinator&#xff09;是一个基于 PostgreSQL 架构的分布式数据库解决方案。它扩展了 PostgreSQL&#xff0c;为用户提供了在多个节点上分布式存储和处理数据的能力。 PGXC 的设计目标是将 PostgreSQL 扩展为能够处理大规模数据…

Java课程设计之购物车管理系统

一、项目准备 1、开发工具&#xff1a;JDK、Eclipse 2、需求分析&#xff1a; 包括商品管理和购物车管理。 1&#xff09;商品管理主要功能 商品信息导入 显示所有商品信息 2&#xff09;购物车主要功能 添加商品到购物车 修改购物车中的商品数量 显示购物车中的所有商…

MockServer 服务框架设计

【摘要】 大部分现有的 mock 工具只能满足 HTTP 协议下简单业务场景的使用。但是面对一些复杂的业务场景就显得捉襟见肘&#xff0c;比如对 socket 协议的应用进行 mock&#xff0c;或者对于支付接口的失败重试的定制化 mock 场景。为解决上述问题&#xff0c;霍格沃兹测试学院…

pdf怎么合并成一个文件?高效工具分享

PDF是一种非常常用的文档格式&#xff0c;许多人经常需要合并多个PDF文件为一个文件。这是因为有时候我们需要将多个PDF文件打包成一个文件&#xff0c;以便于共享或归档。在本文中&#xff0c;我们将介绍如何使用电脑或手机合并PDF文件。 以下是常见的合并PDF的软件&#xff1…

Java中的this、package、import

this 在Java中&#xff0c;this的作用和其词义很接近。 它在方法内部使用&#xff0c;即这个方法所属对象的引用&#xff1b; 它在构造器内部使用&#xff0c;表示该构造器正在初始化的对象。 this 可以调用类的属性、方法和构造器 什么时候使用this关键字呢&#xff…

Socket(七)

文章目录 1. 单文件服务器2. 重定向器Redirector3. 功能完备的HTTP服务器 1. 单文件服务器 要研究HTTP服务器&#xff0c;先从一个简单的服务器开始&#xff0c;无论接受什么请求&#xff0c;这个服务器都始终发送同一个文件。这个单文件服务器名为SingleFileHTTPServer&#…

车辆CAN信号,依据DBC文件解析流程

CAN信号解析流程 1.车辆CAN对应dbc文件 DBC文件是一种用于描述CAN&#xff08;Controller Area Network&#xff09;数据通信协议的文件格式&#xff0c;DBC文件中包含了CAN数据的信号定义、编码方式、单位、范围等信息&#xff0c;可以用于解析和生成CAN数据帧。 一个DBC文件…

ChatGPT的4个不为人知却非常实用的小功能

重点介绍四个ChatGPT很实用的小功能。 一、停止生成 如果在ChatGPT输出内容的过程中&#xff0c;我们发现结果不是自己想要的&#xff0c;可以直接点击“Stop generating”按钮&#xff0c;这样它就会立即停止输出。 二、复制功能 在ChatGPT返回对话的右侧&#xff0c;有三个图…

MySQL主存复制

介绍 配置-主库master 第一步&#xff1a;修改MySQL数据库的配置文件/etc/my.cnf [mysqld] log-binmysql-bin #[必须]启用二进制日志 server-id100 #[必须]服务器唯一id第二部&#xff1a;重启MySQL服务 systemctl restart mysqld第三步&#xff1a;登录MySQL操作&#x…

Linux:软件管理器yum编辑器vim

软件管理器yum&&编辑器vim &#x1f506;软件管理器yum软件包是什么rzsz网络通畅性验证查看软件包怎么安装软件安装yum扩展源怎么卸载软件 &#x1f506;编辑器vim基本概念基本操作正常模式指令集末行模式指令集简单配置vim配置文件的位置常用配置选项使用插件参考资料…

DVWA——Brute Force

文章目录 Brute Force&#xff08;暴力&#xff08;破解&#xff09;&#xff09;&#xff08;1&#xff09;Low等级&#xff08;2&#xff09;Medium等级&#xff08;3&#xff09;High等级&#xff08;4&#xff09;Impossible Brute Force&#xff08;暴力&#xff08;破解&…

chatgpt赋能python:Python如何快速复制上一行?

Python 如何快速复制上一行&#xff1f; 在编写Python代码时&#xff0c;经常需要快速复制上一行代码进行修改。如果只是简单的手动复制粘贴&#xff0c;会造成不必要的时间浪费并且容易出错。本文将介绍三种快速复制上一行代码的方法。 方法一&#xff1a;使用快捷键 在Pyt…

Apache的配置与应用(构建web、日志分割及AWStats分析系统)

Apache的配置与应用 一、构建虚拟Web主机二、httpd服务支持的三种虚拟机类型1、基于域名的虚拟主机2、基于IP地址的虚拟主机3、基于端口的虚拟主机 三、构建web虚拟目录与用户授权限制1、创建用户认证数据文件2、添加用户授权配置3、验证用户访问权限4、在客户机中浏览器访问 四…

Jenkins+GitLab+Docker搭建前端自动化构建镜像容器部署

前言 &#x1f680; 需提前安装环境及知识点&#xff1a; 1、Docker搭建及基础操作 2、DockerFile文件描述 3、Jenkins搭建及基础点 &#x1f680; 目的&#xff1a; 将我们的前端项目打包成一个镜像容器并自动发布部署&#xff0c;可供随时pull访问 一、手动部署镜像及容器 1…

校园高校共享单车管理系统nodejs+vue+express

设计的管理员的详细功能见下图&#xff0c;管理员登录进入本人后台之后&#xff0c;管理单车和区域&#xff0c;审核租赁订单和还车订单&#xff0c;收取租赁费用&#xff0c;查看单车租赁统计信息。 vue的文件结构其实就是一个index.html 中间的内容&#xff0c;用的是vue&am…

同步阻塞与异步非阻塞

同步阻塞消息处理 假如有这样一个系统功能&#xff0c;客户端提交Event至服务器&#xff0c;服务器接收到客户请求之后开辟线程处理客户请求&#xff0c;经过比较复杂的业务计算后将结果返回给客户端 以上设计存在几个显著的缺陷&#xff0c;具体如下。同步Event提交&#xf…