【Leetcode】405. Convert a Number to Hexadecimal

題目地址:

https://leetcode.com/problems/convert-a-number-to-hexadecimal/

將一個3232位整數轉換爲1616進製表示。負數按照取反加一的方式表示。直接按二進制位四個四個的取一下即可。代碼如下:

public class Solution {
    public String toHex(int num) {
    	// 0需要特判
        if (num == 0) {
            return "0";
        }
        
        StringBuilder sb = new StringBuilder();
        while (num != 0) {
        	// 取出最後四位
            int four = num & ((1 << 4) - 1);
            // 右移四位。這裏需要用java裏的無符號右移>>>
            num >>>= 4;
            if (four < 10) {
                sb.append(four);
            } else {
                sb.append((char) ('a' + (four - 10)));
            }
        }
        
        return sb.reverse().toString();
    }
}

時空複雜度O(logn)O(\log n)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章