java数据结构与算法刷题-----LeetCode405. 数字转换为十六进制数

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846

文章目录

    • 分组位运算

在这里插入图片描述

分组位运算

这道题正常来说可以用转换7进制的思想来,但是题目有特殊要求,负数要求补码形式,就不能用这个思路,只能用位运算了,有兴趣的可以参考

🏆LeetCode504. 七进制数https://blog.csdn.net/grd_java/article/details/137261543
解题思路:时间复杂度O( k k k),空间复杂度O( k k k),k是16进制的二进制组数(4位一组),32位共8组,k=8
  1. 26的二进制(补码)为:0000,0000,0000,0000,0000,0000,0001,1010,对应的组号为7组,6组,5组,4组,3组,2组,1组,0组
  2. 我们都知道8421码是二进制转换为16进制常用的方法,例如二进制1010的8421码为1*8+0*4+1*2+0*1 = 8+0+2+1 = 10 = a
  3. 也就是说,只要我们每次只截取4位单独进行8421转换,就可以完成16进制的转换
  4. 但是如何用计算机实现这个效果呢?我们如何将其按4位为一组截取出来呢?
  1. 16进制最大的值是15也就是0xf。对应二进制为0000,0000,0000,0000,0000,0000,0000,1111
  2. 我们只需要将 任意值 与(&) 0xf就可以只得到最后4位,其余全是0.
  3. 例如26的二进制(补码)为:
    0000,0000,0000,0000,0000,0000,0001,1010,与上&,15这个数0xf,也就是
    0000,0000,0000,0000,0000,0000,0000,1111 =
    0000,0000,0000,0000,0000,0000,0000,1010 = 10.我们发现成功将第0组截取了出来
  4. 然后我们对26右移4位,变成
    0000,0000,0000,0000,0000,0000,0000,0001,与上&,15这个数0xf,也就是
    0000,0000,0000,0000,0000,0000,0000,1111 =
    0000,0000,0000,0000,0000,0000,0000,0001 = 1.我们发现成功将第1组截取了出来

也就是说,想要对应的组数,例如最后一组7组,只需要将0-6组全部右位移走,然后与上0xf即可获取,简单来说就是[7组,6组,5组,4组,3组,2组,1组,0组] 右位移(>>) 6组 = [0,0,0,0,0,0,0,7组],[7组,6组,5组,4组,3组,2组,1组,0组] 右位移(>>) 3组 = [0,0,0,7组,6组,5组,4组,3组],此时与上0fx就会截取最低位的一组

  1. 对应到二进制上,组只是我们对其规划的,实际上需要一个二进制一个二进制的位移。
  2. 例如右移6组,就需要右位移6*4=24位二进制.我们发现如果想要位移0组就位移0*4个二进制,想要位移1组,就位移1*4个二进制,想要第7组就需要右位移6组,就需要位移6*4个二进制位
  3. 因此,我们可以搞一个for循环,循环7次,第一次取第7组,第二次取第6组…
代码

在这里插入图片描述

class Solution {static final char[] digits = {'0' , '1' , '2' , '3' , '4' , '5' ,'6' , '7' , '8' , '9' , 'a' , 'b' ,'c' , 'd' , 'e' , 'f' , 'g' , 'h' ,'i' , 'j' , 'k' , 'l' , 'm' , 'n' ,'o' , 'p' , 'q' , 'r' , 's' , 't' ,'u' , 'v' , 'w' , 'x' , 'y' , 'z'};//对应表,我们想要用int的0得到char的'0'。而通过这个会有更好的效率,另外如果是16进制,10对应a,11对应b....public String toHex(int num) {if (num == 0) return "0";//0无需转换StringBuffer sb = new StringBuffer();//保存结果for (int i = 7; i >= 0; i --) {//从高位开始转换int val = (num >> (4 * i)) & 0xf;//依次从高位组到低位组取,先将目标组移到num的最后4位,然后将最后4位取出,就取出了目标组if (sb.length() > 0 || val > 0) {//防止前置0的出现,如果sb已经有值,则当前val是0也不会是前置0.而如果sb中没有值,那么当前val这个值进入sb一定是前置0
//                char digit = val < 10 ? (char) ('0' + val) : (char) ('a' + val - 10);//如果val<10,原样输出,如果>10,就是a,b,c,d,e,fchar digit = digits[val];//但是如果预先处理,直接通过val就可以得到目标数,例如val = 15,会得到f,val = 0,会得到0sb.append(digit);//将字符放入}}return sb.toString();}
}

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

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

相关文章

PTA C 1050 螺旋矩阵(思路与优化)

本题要求将给定的 N 个正整数按非递增的顺序&#xff0c;填入“螺旋矩阵”。所谓“螺旋矩阵”&#xff0c;是指从左上角第 1 个格子开始&#xff0c;按顺时针螺旋方向填充。要求矩阵的规模为 m 行 n 列&#xff0c;满足条件&#xff1a;mn 等于 N&#xff1b;m≥n&#xff1b;且…

【蓝桥杯-读数据】

蓝桥杯-读数据 P8598 [蓝桥杯 2013 省 AB] 错误票据 P8598 [蓝桥杯 2013 省 AB] 错误票据 这道题本身很简单&#xff0c;最大的难点在于读入数据。 #include<bits/stdc.h> using namespace std; #define int long long const int N 2e5 10; int a[N]; signed main()…

人工智能技术的未来创业风口:洞察趋势,把握机遇

人工智能技术的未来创业风口&#xff1a;洞察趋势&#xff0c;把握机遇 引言 在科技的洪流中&#xff0c;人工智能&#xff08;AI&#xff09;如同一颗璀璨的明珠&#xff0c;以其强大的潜力颠覆着各行各业的传统运作模式&#xff0c;并为全球创业者开辟了无数崭新的商业蓝海。…

探寻马来西亚服务器托管的优势与魅力

随着全球跨境业务的不断增加&#xff0c;境外服务器成为越来越受欢迎的选择。在这其中&#xff0c;马来西亚服务器备受关注&#xff0c;其机房通常位于马来西亚首都吉隆坡。对于客户群体主要分布在东南亚、澳大利亚和新西兰等地区的用户来说&#xff0c;马来西亚服务器是一个理…

SV学习笔记(七)

类型转换 写在前面 类型转换可以分为 静态转换和动态转换 。静态转换即需要在转换的表达式前 加上单引号 即可&#xff0c;该方式并不会对转换值做检查。如果发生转换失败&#xff0c;我们也无从得知。动态转换即需要使用 系统函数$cast(tgt&#xff0c; src) 做转换。静态转…

【算法】初识算法

尽量不说废话 算法 一、数据结构二、排序算法三、检索算法四、字符算类型算法五、递归算法六、贪心算法七、动态规划八、归一化算法后记 我们这里指的算法&#xff0c;是作为程序员在计算机编程时运用到的算法。 算法是一个庞大的体系&#xff0c;主要包括以下内容&#xff1a;…

ViT模型实现-模型准备。偏置项。缩放因子。qkv(x)输入,输出。嵌入向量是什么

目录 ViT模型实现-模型准备。 偏置项。 偏置项是什么举例。 缩放因子

一点点安全资料:漏洞利用知识扩展

协议扩展 加密协议SSL/TLS 简介 SSL&#xff08;Secure Sockets Layer&#xff09;和TLS&#xff08;Transport Layer Security&#xff09;是加密协议&#xff0c;设计用来提供网络通信的安全性和数据完整性。尽管TLS是SSL的后继者&#xff0c;但两者的核心目标相同&#x…

CountDownLatch 详解

CountDownLatch 用法详解 CountDownLatch 详解1 原理2 常见用法3 方法介绍4 示例及使用 CountDownLatch 详解 CountDownLatch&#xff08;倒计时门闩&#xff09;是Java并发包中的一个工具类&#xff0c;用于协调多个线程之间的同步。它允许一个或多个线程等待其他线程完成操作…

常见的DOM元素与JavaScript的交互方式[示例]

DOM&#xff08;Document Object Model&#xff09;是一个编程接口&#xff0c;用于在浏览器中表示和操作 HTML 和 XML 文档。通过 DOM&#xff0c;开发人员可以使用 JavaScript 等编程语言来操纵网页上的各种元素&#xff0c;例如添加、删除、修改元素、响应用户事件等。 以下…

【软件工程】测试规格

1. 引言 1.1简介 本次的测试用例是基于核心代码基本开发完毕&#xff0c;在第一代系统基本正常运行后编写的&#xff0c;主要目的是为了后续开发与维护的便利性。 该文档主要受众为该系统后续开发人员&#xff0c;并且在阅读此文档前最后先阅读本系统的需求文档、概要设计文…

谷歌推出多模态视频模型,自动生成丰富动作视频

谷歌的研究人员推出了一款多模态扩散模型——VLOGGER。 用户只需要向VLOGGER输入图像、语音&#xff0c;就能生成带语音、丰富动作的人物视频。VLOGGER基于扩散模型开发而成&#xff0c;并提出了一种全新的架构&#xff0c;将文本生成图像模型与空间、时间控制相结合&#xff…

使用Python转换图片中的颜色

说明&#xff1a;最近在看梵高的画册&#xff0c;我手上的这本画册&#xff08;《文森特梵高》杨建飞 主编&#xff09;书中说&#xff0c;梵高用的颜料里有不耐久的合成颜料&#xff0c;原本的紫色褪成了我们现在所看到的灰蓝色。于是我想&#xff0c;能不能用程序将画中的颜色…

【Rust】基础语法

变量&#xff0c;基本类型&#xff0c;函数&#xff0c;注释和控制流&#xff0c;这些几乎是每种编程语言都具有的编程概念。 这些基础概念将存在于每个 Rust 程序中&#xff0c;及早学习它们将使你以最快的速度学习 Rust 的使用。 变量 首先必须说明&#xff0c;Rust 是强类…

单链表的排序

目录 题目来源&#xff1a; 题目描述&#xff1a; 初始代码&#xff1a; 思路&#xff1a; 具体做法&#xff1a; 我的代码&#xff1a; 优化代码&#xff1a; 对比&#xff1a; 复习&#xff1a;List 基本介绍 常用方法 遍历方式 题目来源&#xff1a; 单链表的排…

MySQL常见锁探究

MySQL常见锁探究 1. 各种锁类型1.1 全局锁1.2 表级锁1.2.1 表锁1.2.2 元数据锁&#xff08;MDL&#xff09;1.2.3 意向锁1.2.4 AUTO-INC 锁 1.3 行级锁1.3.1 Record Lock1.3.2 Gap Lock1.3.3 Next-Key Lock 2. MySQL是如何加锁的&#xff1f;2.1 什么 SQL 语句会加行级锁&#…

WPF —— 关键帧动画

wpf动画类型 1<类型>Animation这些动画称为from/to/by动画或者叫基本动画&#xff0c;他们会在起始值或者结束值进行动画处理&#xff0c;常用的例如 <DoubleAnimation> 2 <类型>AnimationUsingKeyFrames: 关键帧动画&#xff0c;功能要比from/to这些动画功…

Win10 下 Vision Mamba(Vim-main)的环境配置(libcuda.so文件无法找到,windows系统运行失败)

目录 1、下载NVIDIA 驱动程序、cuda11.8、cudnn8.6.0 2、在Anaconda中创建环境并激活 3、下载gpu版本的torch 4、配置环境所需要的包 5、安装causal_conv1d和mamba-1p1p1 安装causal_conv1d 安装mamba-1p1p1 6、运行main.py失败 请直接拉到最后查看运行失败的原因&am…

python图书自动折扣系统

在Python中创建一个图书自动折扣系统可以帮助书店或在线商城自动化地管理图书销售的折扣过程。这样的系统可以根据图书的销量、存货或者促销活动来动态调整折扣率。 图书自动折扣系统概述 图书自动折扣系统的目的是根据预设的规则自动计算图书的折扣。例如&#xff0c;我们可…

Pandas:sort_index、sort_values方法的使用

sort_index和sort_values既是Series类型数据自带的方法&#xff0c;也是DataFrame数据自带的方法。本篇博客以DataFrame为例进行讲述。 1 概览 sort_index和sort_values可以将DataFrame中的数据按照索引及值的大小进行排序。这两个方法所包含的参数及其作用都基本一致。如下表…