zoukankan      html  css  js  c++  java
  • 405. Convert a Number to Hexadecimal

    Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two’s complement method is used.

    Note:

    1. All letters in hexadecimal (a-f) must be in lowercase.
    2. The hexadecimal string must not contain extra leading 0s. If the number is zero, it is represented by a single zero character '0'; otherwise, the first character in the hexadecimal string will not be the zero character.
    3. The given number is guaranteed to fit within the range of a 32-bit signed integer.
    4. You must not use any method provided by the librarywhich converts/formats the number to hex directly.

    Example 1:

    Input:
    26
    
    Output:
    "1a"
    

    Example 2:

    Input:
    -1
    
    Output:
    "ffffffff"

    Basic idea: each time look at the last four digits of binary verion of the input, and maps that to a hex char shift the input to the right by 4 bits, keep doing it until num == 0.

    time: O(1), space: O(1)

    class Solution {
        public String toHex(int num) {
            if(num == 0) {
                return "0";
            }
            char[] base = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
            StringBuilder sb = new StringBuilder();
            boolean isLeading = true;
            for(int i = 28; i >= 0; i -= 4) {
                int digit = (num >> i) & 15;
                if(digit != 0 || !isLeading) {
                    sb.append(base[digit]);
                    isLeading = false;
                }
            }
            return sb.toString();
        }
    }
  • 相关阅读:
    图论————最短路,最小生成树。
    复习KMP
    P3930 SAC E#1
    P3818 小A和uim之大逃离 II
    洛谷P3928 SAC E#1
    洛谷-P3927 SAC E#1
    求逆欧拉函数(arc)
    《公式证明:欧拉函数》
    求一个极大数的欧拉函数 phi(i)
    仙人掌(cactus)
  • 原文地址:https://www.cnblogs.com/fatttcat/p/11404672.html
Copyright © 2011-2022 走看看