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

    原题链接在这里:https://leetcode.com/problems/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 library which converts/formats the number to hex directly.

    Example 1:

    Input:
    26
    Output:
    "1a"

    Example 2:

    Input:
    -1
    Output:
    "ffffffff"
    题解:

    每4位组成一个hexadecimal digit, 每次取出最后4位和1111做位运算&得到一个digit.

    num 右移4位,这里用>>>而不是>>. e.g. -1的two’s complement表示为ffffffff, 32位全是1 bit. 若用>> 首位的1 bit不会移动, while loop的condition num!=0不会出现.

    Time Complexity: O(1). Space: O(1).

    AC Java:

     1 public class Solution {
     2     public String toHex(int num) {
     3         if(num == 0){
     4             return "0";
     5         }
     6         
     7         StringBuilder sb = new StringBuilder();
     8         while(num != 0){
     9             int digit = num & 0xf;
    10             sb.insert(0, digit<10 ? (char)(digit+'0') : (char)(digit-10+'a'));
    11             num >>>= 4;
    12         }
    13         return sb.toString();
    14     }
    15 }
  • 相关阅读:
    BSGS
    [AT1252] IOIOI カード占い
    [十二省联考2019]春节十二响
    [CF912E] Prime Gift
    CDQ分治
    [CF747F] Igor and Interesting Numbers
    [十二省联考2019]异或粽子
    51Nod 2128 前缀异或
    51Nod 3212 数字变位
    HDU 1106 排序
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/6273094.html
Copyright © 2011-2022 走看看