1. 程式人生 > >Leetcode 405.數字轉化為十六進位制數

Leetcode 405.數字轉化為十六進位制數

數字轉化為十六進位制數

給定一個整數,編寫一個演算法將這個數轉換為十六進位制數。對於負整數,我們通常使用 補碼運算 方法。

注意:

  1. 十六進位制中所有字母(a-f)都必須是小寫。
  2. 十六進位制字串中不能包含多餘的前導零。如果要轉化的數為0,那麼以單個字元'0'來表示;對於其他情況,十六進位制字串中的第一個字元將不會是0字元。 
  3. 給定的數確保在32位有符號整數範圍內。
  4. 不能使用任何由庫提供的將數字直接轉換或格式化為十六進位制的方法。

示例 1:

輸入:

26

 

輸出:

"1a"

示例 2:

輸入:

-1

 

輸出:

"ffffffff"

 

第二種解法就是按位與來獲取。既然是得到十六進位制,那麼每次與上0xF(二進位制就是1111),得到一個值,然後數字向右移動4位,這裡需要注意的是數字是有符號的,剛好可以利用Java提供的無符號移動>>>。完美!!!

 

 1 import java.util.ArrayList;
 2 import java.util.List;
 3 
 4 class Solution {
 5     char[] map = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
6 public String toHex(int num) { 7 if(num == 0) return "0"; 8 String result = ""; 9 while(num != 0){ 10 result = map[(num & 0xF)] + result; 11 num = (num >>> 4); 12 } 13 return result; 14 } 15 }