解法一

转换成负进制和正进制大致相同,但注意余数始终为正,若不满足则可以修改商来补充余数。

  1. class Solution {
  2. public String baseNeg2(int N) {
  3. if (N == 0) {
  4. return "0";
  5. }
  6. StringBuilder s = new StringBuilder();
  7. for (int base = -2, x; N != 0; ) {
  8. x = N % base;
  9. N /= base;
  10. // 余数始终非负
  11. if (x < 0) {
  12. ++N;
  13. x -= base;
  14. }
  15. s.append(x);
  16. }
  17. return s.reverse().toString();
  18. }
  19. }