Medium
Given an integer n
, return a binary string representing its representation in base -2
.
Note that the returned string should not have leading zeros unless the string is "0"
.
Example 1:
Input: n = 2
Output: “110” Explantion: (-2)2 + (-2)1 = 2
Example 2:
Input: n = 3
Output: “111” Explantion: (-2)2 + (-2)1 + (-2)0 = 3
Example 3:
Input: n = 4
Output: “100” Explantion: (-2)2 = 4
Constraints:
0 <= n <= 109
class Solution {
fun baseNeg2(n: Int): String {
val sb = StringBuilder(Integer.toBinaryString(n))
sb.reverse()
var carry = 0
var sum: Int
var pos = 0
while (pos < sb.length) {
sum = carry + sb[pos].code - '0'.code
sb.setCharAt(pos, if (sum % 2 == 0) '0' else '1')
carry = sum / 2
if (pos % 2 == 1 && sb[pos] == '1') {
carry += 1
}
pos++
if (pos >= sb.length && carry > 0) {
sb.append(Integer.toBinaryString(carry))
carry = 0
}
}
return sb.reverse().toString()
}
}