蓝桥杯——十六进制转八进制(Java解法)

蓝桥杯——十六进制转八进制(Java解法)_第1张图片
这道题其实挺难的,之前做过一次,用的十六进制转化为十进制,然后用十进制再转化为八进制,代码很简单,用的jdk上自带的进制转换进行换算。

import java.util.Scanner;
/** 
* @author 作者 E-mail: WYJ [email protected]
* @version 创建时间:2019年7月22日 下午4:19:18 
*  类说明 十六进制转十进制————十进制转八进制,失败。。。
*/
public class 十六进制转八进制 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		String[] str = new String[n];
		long[] lo = new long[n];
		String[] st = new String[n];
		for(int i=0;i

很容易就想到,这个方法就不行,因为十六进制数长度不超过100000这个是长度,而且转化为十进制,就算使用long类型的也不够用,所以这个方法就失败了。
后来在网上看了许多代码,基本上都是差不多的思路,将十六进制转化为二进制,二进制再转化为八进制,这样就行了,开始我还在疑问,十进制都不够用,二进制不应该更不够用,其实这里的二进制不是数字类型,而是字符串类型的,字符串可以储存很长啊。

import java.util.Scanner;

/** 
* @author 作者 E-mail: WYJ [email protected]
* @version 创建时间:2019年7月22日 下午8:48:56 
*  类说明 十六进制转二进制————二进制转八进制。
*/
public class 十六进制转十进制1 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		String[] str = new String[n];
		for(int i=0;i

这段代码就可以了,最开始我都是用的字符串相加,但是运行超时了,后来再仔细看看他们的代码,都用的StringBuffer来实现字符串拼接,这里我借鉴的别人的方法。介绍的挺不错的。
借鉴:https://blog.csdn.net/qq_35187119/article/details/81280100
https://blog.csdn.net/catchingsun/article/details/50571593

你可能感兴趣的:(学习总结)