Welcome to Subscribe On Youtube

1017. Convert to Base -2

Description

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

Solutions

  • class Solution {
        public String baseNeg2(int n) {
            if (n == 0) {
                return "0";
            }
            int k = 1;
            StringBuilder ans = new StringBuilder();
            while (n != 0) {
                if (n % 2 != 0) {
                    ans.append(1);
                    n -= k;
                } else {
                    ans.append(0);
                }
                k *= -1;
                n /= 2;
            }
            return ans.reverse().toString();
        }
    }
    
  • class Solution {
    public:
        string baseNeg2(int n) {
            if (n == 0) {
                return "0";
            }
            int k = 1;
            string ans;
            while (n) {
                if (n % 2) {
                    ans.push_back('1');
                    n -= k;
                } else {
                    ans.push_back('0');
                }
                k *= -1;
                n /= 2;
            }
            reverse(ans.begin(), ans.end());
            return ans;
        }
    };
    
  • class Solution:
        def baseNeg2(self, n: int) -> str:
            k = 1
            ans = []
            while n:
                if n % 2:
                    ans.append('1')
                    n -= k
                else:
                    ans.append('0')
                n //= 2
                k *= -1
            return ''.join(ans[::-1]) or '0'
    
    
  • func baseNeg2(n int) string {
    	if n == 0 {
    		return "0"
    	}
    	ans := []byte{}
    	k := 1
    	for n != 0 {
    		if n%2 != 0 {
    			ans = append(ans, '1')
    			n -= k
    		} else {
    			ans = append(ans, '0')
    		}
    		k *= -1
    		n /= 2
    	}
    	for i, j := 0, len(ans)-1; i < j; i, j = i+1, j-1 {
    		ans[i], ans[j] = ans[j], ans[i]
    	}
    	return string(ans)
    }
    
  • function baseNeg2(n: number): string {
        if (n === 0) {
            return '0';
        }
        let k = 1;
        const ans: string[] = [];
        while (n) {
            if (n % 2) {
                ans.push('1');
                n -= k;
            } else {
                ans.push('0');
            }
            k *= -1;
            n /= 2;
        }
        return ans.reverse().join('');
    }
    
    
  • public class Solution {
        public string BaseNeg2(int n) {
            if (n == 0) {
                return "0";
            }
            int k = 1;
            StringBuilder ans = new StringBuilder();
            int num = n;
            while (num != 0) {
                if (num % 2 != 0) {
                    ans.Append('1');
                    num -= k;
                } else {
                    ans.Append('0');
                }
                k *= -1;
                num /= 2;
            }
            char[] cs = ans.ToString().ToCharArray();
            Array.Reverse(cs);
            return new string(cs);
        }
    }
    
  • impl Solution {
        pub fn base_neg2(n: i32) -> String {
            if n == 0 {
                return "0".to_string();
            }
            let mut k = 1;
            let mut ans = String::new();
            let mut num = n;
            while num != 0 {
                if num % 2 != 0 {
                    ans.push('1');
                    num -= k;
                } else {
                    ans.push('0');
                }
                k *= -1;
                num /= 2;
            }
            ans.chars().rev().collect::<String>()
        }
    }
    
    

All Problems

All Solutions