Problem: HJ5 进制转换
题目描述
描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
数据范围:保证结果在 1 ≤ n ≤ 231 − 1
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
示例1
输入:
0xAA
输出:170
解题思路
Integer.parseInt方法将十六进制字符串转换为十进制数,并将结果打印输出
算法流程
- 创建一个Scanner对象
in,用于读取输入。- 使用
while循环,不断读取输入的十六进制字符串。- 在循环中,通过
in.nextLine()方法获取一行输入的十六进制字符串,并将其保存在hexString变量中。- 使用
Integer.parseInt(hexString.substring(2), 16)方法将十六进制字符串转换为十进制数。hexString.substring(2)是为了去除十六进制字符串的前缀"0x",然后将结果保存在decimal变量中- 使用
System.out.println(decimal)将转换后的十进制数打印输出。- 循环继续,等待下一行输入的十六进制字符串。
代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextLine()) {
String hexString = in.nextLine();
int decimal = Integer.parseInt(hexString.substring(2), 16);
System.out.println(decimal);
}
}
}
复杂度
- 时间复杂度:
添加时间复杂度, 示例:
- 读取输入的十六进制字符串的时间复杂度为O(n),其中n是输入字符串的长度。
- 将十六进制字符串转换为十进制数的时间复杂度为O(1),因为转换的操作只涉及一个字符串的截取和析。
- 打印输出的时间复杂度为O(1)。
- 空间复杂度:
添加空间复杂度, 示例:
- 创建Scanner对象的空间复杂度为O(1)。
- 创建变量
hexString和decimal的空间复杂度为O(1)。