405. 数字转换为十六进制数
考点
- 掩码技巧
- 移位技巧
题解
1 | class Solution { |
时间复杂度:\(O\left( k
\right)\),在这里\(k\)等于32 / 4 = 8
,即32位整数的十六进制位数
空间复杂度:\(O\left( k \right)\),同上
思路
首先将整数从int
转换为unsigned int
,因为C++当中没有无符号运算符;倘若整数为int
类型的负数,右移时会在高位补1
同时题目要求不包含前导零,所以每次循环之前需要判断整数是否为空
整数和掩码1111
作与运算取出低四位,并将其倒序保存至字符串后,整数右移四位开启下一轮循环