LC每日一题|20240428 - 1017. 负二进制转换
给你一个整数
n,以二进制字符串的形式返回该整数的 负二进制(base -2) 表示。注意, 除非字符串就是
"0",否则返回的字符串中不能含有前导零。
提示:
0 <= n <= 10^9
题目等级:Medium
解题思路
和直接求取二进制的逻辑差不太多,只是右移之后需要将自身置负(毕竟是除以-2嘛)~
AC代码
class Solution {
fun baseNeg2(n: Int): String {
if (n == 0) return n.toString()
var local = n
val builder = StringBuilder()
while (local != 0) {
var k = local and 1
builder.insert(0, k)
local = 0 - (local shr 1)
}
return builder.toString()
}
}
时间复杂度:O(logN)
空间复杂度:O(logN)