LC每日一题|20240428 - 1017. 负二进制转换

58 阅读1分钟

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)