HJ5 进制转换

204 阅读2分钟

Problem: HJ5 进制转换

题目描述

描述

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
数据范围:保证结果在 1 ≤ n ≤ 231 − 1

输入描述:

输入一个十六进制的数值字符串。

输出描述:

输出该数值的十进制字符串。不同组的测试用例用\n隔开。

示例1

输入:0xAA
输出:170

解题思路

Integer.parseInt方法将十六进制字符串转换为十进制数,并将结果打印输出

算法流程

  1. 创建一个Scanner对象in,用于读取输入。
  2. 使用while循环,不断读取输入的十六进制字符串。
  3. 在循环中,通过in.nextLine()方法获取一行输入的十六进制字符串,并将其保存在hexString变量中。
  4. 使用Integer.parseInt(hexString.substring(2), 16)方法将十六进制字符串转换为十进制数。hexString.substring(2)是为了去除十六进制字符串的前缀"0x",然后将结果保存在decimal变量中
  5. 使用System.out.println(decimal)将转换后的十进制数打印输出。
  6. 循环继续,等待下一行输入的十六进制字符串。

代码

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)O(n)

  • 读取输入的十六进制字符串的时间复杂度为O(n),其中n是输入字符串的长度。
  • 将十六进制字符串转换为十进制数的时间复杂度为O(1),因为转换的操作只涉及一个字符串的截取和析。
  • 打印输出的时间复杂度为O(1)。
  • 空间复杂度:

添加空间复杂度, 示例: O(1)O(1)

  • 创建Scanner对象的空间复杂度为O(1)。
  • 创建变量hexStringdecimal的空间复杂度为O(1)。