蓝桥杯 基础练习 十六进制转八进制

news/2025/4/1 5:05:16/

http://lx.lanqiao.cn/problem.page?gpid=T51

题意:将16进制数转化为8进制数

思路:由于字符串比较长,所以只能通过字符串模拟来做。先将16进制转为2进制,再逆序将2进制转化为8进制。这么做的原因是:每4位二进制刚好对应一个16进制数,每3个二进制数刚好对应一个8进制数。

反思:这题虽然简单,但是却可以很好的复习java基本语法,栈,map,String,StringBuffer等。

代码:

import java.util.*;/*** @ClassName Fabio* @Description TODO* @Auther ydc* @Date 2019/3/23 11:05* @Version 1.0**/
public class Main {static String changeTo2(String s){Map<Character,Integer> mp = new HashMap<>();mp.put('A',10);mp.put('B',11);mp.put('C',12);mp.put('D',13);mp.put('E',14);mp.put('F',15);int n=s.length();StringBuffer ans = new StringBuffer();for(int i=0;i<n;i++){int tmp=0;if(s.charAt(i)>='A'){tmp=mp.get(s.charAt(i));}else{tmp= Integer.parseInt(String.valueOf(s.charAt(i)));}Stack<Integer> stack = new Stack<>();for(int j=0;j<4;j++){stack.push(tmp%2);tmp/=2;}while (!stack.empty()){ans.append(stack.peek());stack.pop();}}return ans.toString();}static String changeTo8(String s){int a[] = new int[3];a[0]=1;a[1]=2;a[2]=4;int n=s.length();StringBuffer ans= new StringBuffer();Stack<Integer> stack = new Stack<>();for(int i=n-1;i>=0;i--){int k=0;int tmp=0;while(k<3&&i>=0){//System.out.println(a[k]+"  ."+String.valueOf(s.charAt(i)));tmp+=a[k]* Integer.parseInt(String.valueOf(s.charAt(i)));k++;if(k<3) i--;}//System.out.println(i);//System.out.println(tmp);stack.push(tmp);}if(stack.peek()==0){stack.pop();//不能有前导0}while (!stack.empty()){
//            if(stack.peek()==0){
//                stack.pop();
//                continue;
//            }ans.append(stack.peek());stack.pop();}return ans.toString();}public static void main(String argc[]) {Scanner cin = new Scanner(System.in);int n=cin.nextInt();for(int i=0;i<n;i++){String s = cin.next();// System.out.println(changeTo2(s));System.out.println(changeTo8(changeTo2(s)));}}}

 


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

相关文章

无法通过8192在表空间中扩展

今天在oracle数据库表里面删除数据的时候&#xff0c;弹框提示说“无法通过8192在表空间中扩展”&#xff0c;发现增删改都会提示这个问题&#xff0c;这下就郁闷了。最后请教了下公司的老前辈才知道了是数据库的表空间不够了&#xff0c;后来在老前辈的指导下将这个问题解决了…

基于迪文T5L1单芯片的车牌识别功能实现

基于迪文T5L1芯片的车牌识别功能&#xff0c;是通过T5L1接收并处理OV2640摄像头拍摄的车牌号图片、抓取车牌字符信息来实现的。图片处理过程借助了DGUS平台的基本显示功能&#xff0c;可在一定程度上减少二次开发工作。 一、视频演示 基于T5L1的车牌识别方案 二、迪文车牌识别…

视觉里程计 -- 单层多层 直接法(附代码解析)

直接法是根据像素的亮度信息(Intensity&#xff09;来估计相机的运动。 还记得估计相机的运动有以下方法&#xff1a; 1.提取特征点和描述子&#xff0c;比如SIFT&#xff0c;FAST特征点&#xff0c;不同视角的图片特征点匹配&#xff0c;然后用对极几何&#xff0c;PnP或ICP法…

git报错 - Your branch and ‘xxx/xxx‘ have diverged

报这个错就是因为你和远程库出现分叉了 #mermaid-svg-21jvusaqPFOsDmNx .label{font-family:trebuchet ms, verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-21jvusaqPFOsDmNx .label text{fill:#333}#mermaid-svg-21jvusaqPFOsDmNx…

C#程序设计练习题十七: 问题 E: C#统计字符出现的个数

题目描述 编写一个实例方法getCountChar方法。该方法参数有两个&#xff0c;第一个参数可以是字符串s&#xff0c;第二个参数为字符c&#xff0c;方法返回值为第二个参数在第一个参数中出现次数。例如&#xff0c;CountChar("6221982",2)返回值为3。 部分程序代码已…

win7 配置apache24 https访问

部署普通站点 1、首先下载apache24版本&#xff0c;下载地址为http://pan.baidu.com/s/1pLmvDgB; 2、解压到你的电脑本地目录&#xff0c;如D:\Apache24(下文配置都会以当前目录作为参考说明) 3、修改D:\Apache24\conf\目录下的httpd.conf文件 主要修改点在以下几个方面:&am…

T51:字符流中第一个未重复的字符(Java)

题目;* 请实现一个函数用来找出字符流中第一个只出现一次的字符。 例如&#xff0c;当从字符流中只读出前两个字符"go"时&#xff0c;第一个只出现一次的字符是"g"。 当从该字符流中读出前六个字符“google"时&#xff0c;第一个只出现一次的字符是&q…

Leetcode典型题解答和分析、归纳和汇总——T51(N皇后)

题目描述&#xff1a; n皇后问题研究的是如何将n个皇后放置在n*n的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给定一个整数n&#xff0c;返回所有不同的N皇后问题的解决方案。 题目解析&#xff1a; 本题采用典型的回溯法来进行求解。本质就是暴力搜索&#xff0c…