zoukankan      html  css  js  c++  java
  • leetcode 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 library which converts/formats the number to hex directly.

    Example 1:

    Input:
    26
    
    Output:
    "1a"
    

    Example 2:

    Input:
    -1
    
    Output:
    "ffffffff"
    

    >>> hex(123)
    '0x7b'
    >>> hex(123)[2:]
    '7b'
    >>> hex(1)
    '0x1'
    >>> hex(0)
    '0x0'
    >>> bin(0)
    '0b0'
    >>> bin(1)
    '0b1'
    class Solution(object):
        def toHex(self, num):
            """
            :type num: int
            :rtype: str
            """
            # use recurively        
            if num < 0:
                return hex(num+(1<<32))[2:]
            else:
                return hex(num)[2:]
    

     注:Main ideal is to flip the negative number to positive by using following code: # num = num + 2**32

    负数的binary 表示就是num + 2**32的正数表示。因为python里hex和bin都是针对正数有效。

    >>> bin(-1)
    '-0b1'
    >>> bin(-12)
    '-0b1100'
    >>> hex(-12)
    '-0xc'
    >>> hex(-123)
    '-0x7b'

    因此,自己写的话,可以:

    class Solution(object):
        def toHex(self, num):
            """
            :type num: int
            :rtype: str
            """
            # use recurively        
            if num == 0: return "0"            
            if num < 0:
                num += (1<<32)
            ans = ""
            hex_s = "0123456789abcdef"
            while num != 0:
                ans = hex_s[num & 0xf] + ans
                num = num >> 4
            return ans        
    

     其他解法:

    def toHex(self, num):
            if num==0: return '0'
            mp = '0123456789abcdef'  # like a map
            ans = ''
            for i in range(8):
                n = num & 15       # this means num & 1111b
                c = mp[n]          # get the hex char 
                ans = c + ans
                num = num >> 4
            return ans.lstrip('0')  #strip leading zeroes
    
  • 相关阅读:
    jenkins或ansible启动应用不成功日志又不报错
    zookeeper学习(2)----zookeeper和kafka的关系
    缺包与maven
    zookeeper入门(1)---基本概念
    6. kafka序列化和反序列化
    5.Kafka消费者-从Kafka读取数据(转)
    git学习(5)---git stash
    通过getResourceAsStream方法获取项目下的指定资源
    CommandLineParse类(命令行解析类)
    4.kafka生产者---向Kafka中写入数据(转)
  • 原文地址:https://www.cnblogs.com/bonelee/p/8836737.html
Copyright © 2011-2022 走看看