添加 problem 1017

This commit is contained in:
YDZ
2019-08-09 20:08:09 +08:00
parent abd6e97460
commit 1cf7795945
3 changed files with 119 additions and 0 deletions

View File

@ -0,0 +1,20 @@
package leetcode
import "strconv"
func baseNeg2(N int) string {
if N == 0 {
return "0"
}
res := ""
for N != 0 {
remainder := N % (-2)
N = N / (-2)
if remainder < 0 {
remainder += 2
N++
}
res = strconv.Itoa(remainder) + res
}
return res
}

View File

@ -0,0 +1,52 @@
package leetcode
import (
"fmt"
"testing"
)
type question1017 struct {
para1017
ans1017
}
// para 是参数
// one 代表第一个参数
type para1017 struct {
one int
}
// ans 是答案
// one 代表第一个答案
type ans1017 struct {
one string
}
func Test_Problem1017(t *testing.T) {
qs := []question1017{
question1017{
para1017{2},
ans1017{"110"},
},
question1017{
para1017{3},
ans1017{"111"},
},
question1017{
para1017{4},
ans1017{"110"},
},
}
fmt.Printf("------------------------Leetcode Problem 1017------------------------\n")
for _, q := range qs {
_, p := q.ans1017, q.para1017
fmt.Printf("【input】:%v 【output】:%v\n", p, baseNeg2(p.one))
}
fmt.Printf("\n\n\n")
}

View File

@ -0,0 +1,47 @@
# [1017. Convert to Base -2](https://leetcode.com/problems/convert-to-base-2/)
## 题目:
Given a number `N`, return a string consisting of `"0"`s and `"1"`s that represents its value in base **`-2`** (negative two).
The returned string must have no leading zeroes, unless the string is `"0"`.
**Example 1:**
Input: 2
Output: "110"
Explantion: (-2) ^ 2 + (-2) ^ 1 = 2
**Example 2:**
Input: 3
Output: "111"
Explantion: (-2) ^ 2 + (-2) ^ 1 + (-2) ^ 0 = 3
**Example 3:**
Input: 4
Output: "100"
Explantion: (-2) ^ 2 = 4
**Note:**
1. `0 <= N <= 10^9`
## 题目大意
给出数字 N返回由若干 "0" 和 "1"组成的字符串,该字符串为 N 的负二进制base -2表示。除非字符串就是 "0",否则返回的字符串中不能含有前导零。
提示:
- 0 <= N <= 10^9
## 解题思路
- 给出一个十进制的数,要求转换成 -2 进制的数
- 这一题仿造十进制转二进制的思路,短除法即可。