华为OD机试真题(Java),整数编码(100%通过+复盘思路)

news2025/1/21 0:57:09

在这里插入图片描述

一、题目描述

实现一个整数编码方法,使得待编码的数字越小,编码后所占用的字节数越小。

编码规则如下:

  1. 编码时7位一组,每个字节的低7位用于存储待编码数字的补码;
  2. 字节的最高位表示后续是否还有字节,置1表示后面还有更多的字节,置0表示当前字节为最后一个字节;
  3. 采用小端序编码,低位和低字节放在低地址上;
  4. 编码结果按16进制数的字符格式进行输出,小写字母需要转化为大写字母。

二、输入描述

输入的为一个字符串表示的非负整数。

三、输出描述

输出一个字符串表示整数编码的16进制码流。

四、Java算法源码

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();

    // 先转成二进制
    String binary = Integer.toBinaryString(n);

    // 遍历处理二进制字符串
    // 从低位(右)往高位运算(左)
    StringBuilder builder = new StringBuilder();
    int i = binary.length();
    while (i > 0) {
        StringBuilder binStringBuilder = new StringBuilder();
        if (i >= 7) {
            if (i > 7) {
                // 剩余的超过7位,说明还有,用1补位
                binStringBuilder.append("1");
            }
            binStringBuilder.append(binary, i - 7, i);
            i -= 7;
        } else {
            // 少于7位,用0补位
            for (int j = 0; j < 8 - i; j++) {
                binStringBuilder.append("0");
            }
            binStringBuilder.append(binary, 0, i);
            i = 0;
        }

        // 二进制字符串转成int值,在转成16进制字符串,再转成大写
        String hex = Integer.toHexString(Integer.parseInt(binStringBuilder.toString(), 2)).toUpperCase(Locale.ROOT);
        builder.append(hex);
    }

    String result = builder.toString();
    if (result.length() < 2) {
        // 16进制不足两位补0
        System.out.println("0" + result);
    } else {
        System.out.println(result);
    }
}

五、效果展示

  1. 输入:100
  2. 输出:64
  3. 说明:100的二进制表示为0110 0100只需一个字节进行编码。字节的最高位0,剩余7位存储数字100的低7位(1100100)所以编码后的输出为64。

在这里插入图片描述
输入:1000
输出:E807
说明:1000的二进制表示为 0011 1110 1000 至少需要两个字节进行编码,第一个字节最高位是1 剩余7位存储数字 1000的低7位(1101000),所以第一个字节的二进制位(1110 1000)即E8,第二个字节最高位置0 剩余的7位存储数字 1000的第二个低7位(0000111),所以第一个字节的二进制为(0000 0111)即07,采用小端序编码 所以低字节E8输出在前面,高字节07输出在后面。

在这里插入图片描述

🏆本文收录于,华为OD机试2023(Java)

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023联网公司时薪排行榜出炉,多多排榜首。微软、美团很强

今天分享一个对于选择公司非常有用的参考&#xff1a;“互联网时薪”。 我们在选择一个公司的时候&#xff0c;往往会比较关注总收入package (除了基本的月薪&#xff0c;加上其他的所有的收入&#xff0c;包括但不限于奖金、股票或股份的分红等等)。 然而&#xff0c;总收入…

算力网络安全

算力网络安全 1. 算力网络简介1.1 基本概念1.2 应用场景 2. 算力网络安全需求3. 算力网络安全架构3.1 算力网络参考架构3.2 资源层安全3.3 控制层和编排管理层安全3.4 服务层安全 4. 算力网络安全关键技术4.1 安全计算4.2 安全编排4.3 数据溯源4.4 可信内生4.5 操作审计4.6 安全…

【服务器】Linux搭建我的世界服务器 + 公网远程联机教程

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 前言 1. 安装JAVA 2. MCSManager安装 3.局域网访问MCSM 4.创建我的世界服务器 5.局域网联机测试 6.安装cpolar内网穿透 7. 配置公网访问地址 8.远程联机测试 9. 配置固定…

ICMP 协议详解

文章目录 1 概述2 ICMP 协议2.1 工作原理2.2 报文格式2.3 ICMP 类型 1 概述 #mermaid-svg-6yUB8ZNYSzjbbDDq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6yUB8ZNYSzjbbDDq .error-icon{fill:#552222;}#mermaid-s…

Qt 路径

Qt 路径 Qt中路径问题小结目录与路径的区别路径分隔符Qt 路径与 Windows 路径转换相对路径mkdir 和 mkpath判断目录是否存在修改路径setPath Qt中路径问题小结 原文链接&#xff1a;https://blog.csdn.net/Andy_93/article/details/52831175 在做Qt项目的时候&#xff0c;我们…

【重学c++primer】第二章 深入浅出:变量的类型

文章目录 【重学cprimer】第二章 变量以及变量的基本类型1、从初始化/赋值语句说起2、类型详解一些未定义部分字面值变量以及变量的类型隐式类型转换 3、复合类型&#xff1a;从指针到引用指针的操作void*指针的好处引用指针的引用 4、常量和常量表达式类型const和指针const的赋…

AndroidStudio导入Android AOSP源码

一、生成导入到AS所需的配置文件 1.1、切换到Android源码的目录&#xff0c;执行配置环境脚本 source build/envsetup.sh1.2、执行lunch,选择对应产品 lunch1.3、执行make idegen make idegen编译完成后&#xff0c;就可以在Android源码的根目录下看到android.iml和android…

元宇宙展厅--音乐科技展厅

作为音乐科技领域的先锋&#xff0c;这里是一个展示最新音乐科技的创新空间。我们的元宇宙展厅汇聚了来自世界各地最前沿的音乐创新&#xff0c;将展示最新、具有前瞻性的音乐科技应用。让您可以深入了解这个领域的最新发展。 一、音乐科技展厅概述 让我们来了解一下我们的元宇…

首期smardaten无代码训练营圆满收官,两周内容精彩回顾!

”smardaten无代码训练营&#xff0c;旨在通过线上碎片化时间的课程学习实操演练&#xff0c;帮助学员探索产品能力&#xff0c;验证项目需求&#xff0c;实现多个demo系统的复刻搭建。“ 首期smardaten无代码训练营于上周圆满收官&#xff01;本期共有64名学员报名参加&#…

KDZR-10A三相直流电阻测试仪

一、产品概述 直流电阻的测量仪是变压器、互感器、电抗器、电磁操作机构等感性线圈制造中半成品、成品出厂试验、安装、交接试验及电力部门预防性试验的项目&#xff0c;能有效发现感性线圈的选材、焊接、连接部位松动、缺股、断线等制造缺陷和运行后存在的隐患。 为了满足感…

Hive ---- DDL(Data Definition Language)数据定义

Hive ---- DDL&#xff08;Data Definition Language&#xff09;数据定义 1. 数据库&#xff08;database&#xff09;1. 创建数据库2. 查询数据库3. 修改数据库4. 删除数据库5. 切换当前数据库 2. 表&#xff08;table&#xff09;1. 创建表2. 查看表3. 修改表4. 删除表5. 清…

07_阻塞队列(BlockingQueue)

目录 1. 什么是BlockingQueue 2. 认识BlockingQueue 3. 代码演示 栈与队列概念 栈(Stack)&#xff1a;先进后出&#xff0c;后进先出 队列&#xff1a;先进先出 1. 什么是BlockingQueue 在多线程领域&#xff1a;所谓阻塞&#xff0c;在某些情况下会挂起线程&#xff08;即…

JVM 基本知识

目录 前言 一、JVM 内存区域划分 1.1 程序计数器 1.2 栈 1.3 堆 1.4 方法区 二、 JVM 类加载机制 2.1 类加载需要经过的几个步骤 2.1.1 Loading - 加载 2.1.2 Linking - 连接 2.1.3 initialization&#xff08;初始化&#xff09; 小结 经典面试题 三、JVM 垃圾…

天河新一代,安装OpenCV

1&#xff09;下载 Releases opencv/opencv GitHub 下载一个版本&#xff0c;传上去。 解压&#xff0c;因为只要最基本的功能&#xff0c;所以不需要ctri等包。 2&#xff09; 一些选项 cmake .. -D<选项名1><设定值1> -D<选项名2><设定值2> …

Metasploit Framework-安全漏洞检测工具使用

一款开源的安全漏洞检测工具&#xff0c;简称MSF。可以收集信息、探测系统漏洞、执行漏洞利用测试等&#xff0c;为渗透测试、攻击编码和漏洞研究提供了一个可靠平台。 集成数千个漏洞利用、辅助测试模块&#xff0c;并保持持续更新。 由著名黑客、安全专家H.D. Moore主导开发…

Hadoop学习笔记(二)环境配置与服务器克隆

VMware与Centos7的安装 这部分很简单&#xff0c;只需要按照常规步骤一步一步安装即可。最后出现如下画面便完成了。 如果出现了一打开 “开启虚拟机” 就蓝屏的情况。可以试试将VMware更新到16的版本以上。 对虚拟机进行一系列的设置 设置VMware的IP地址 接下来点击 “NAT设…

计算任意时间内课时出现次数以及冲突情况判断

背景 整体由四部分组成&#xff0c;报名时间、报名周期、上课时间、上课周期 通过选择报名时间、报名周期、以及上课时间&#xff0c;去计算在培训周期内总的培训课时&#xff0c;并当上课时间冲突时&#xff0c;给出提示。 需求&#xff1a; 报名时间&#xff08;日期时分&…

分享10个非常好用的绘图工具

无论你是一个专业的插画师&#xff0c;还是一个有创造力的人&#xff0c;想要随时记录生活的灵感&#xff0c;现在你只需要拿起平板电脑或打开电脑浏览器来描述你脑海中的图片。在本文中&#xff0c;我们选择了10个强大、方便、易于使用的在线绘图软件&#xff0c;其中一个必须…

人工智能之配置环境教程一:安装VsCode和Anaconda

人工智能之配置环境教程一&#xff1a;安装VsCode和Anaconda 作者介绍一&#xff0e; 安装VScode编辑器二. 安装Anaconda 作者介绍 孟莉苹&#xff0c;女&#xff0c;西安工程大学电子信息学院&#xff0c;2021级硕士研究生&#xff0c;张宏伟人工智能课题组。 研究方向&#…

语音特征工程—时域分析

当下主流语音前端算法在特征工程方面&#xff0c;从vad&#xff0c;降噪、降混响到盲源分离&#xff0c;无论是传统做法还是NN做法&#xff0c;大多基于频域。但近年在语音分离领域也看到了利用时域的做法&#xff0c;也取得了不错的效果。 本文从特征工程的角度&#xff0c;对…