diff --git a/Algorithms/1017. Convert to Base -2/1017. Convert to Base -2.go b/Algorithms/1017. Convert to Base -2/1017. Convert to Base -2.go new file mode 100644 index 00000000..4821baa1 --- /dev/null +++ b/Algorithms/1017. Convert to Base -2/1017. Convert to Base -2.go @@ -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 +} diff --git a/Algorithms/1017. Convert to Base -2/1017. Convert to Base -2_test.go b/Algorithms/1017. Convert to Base -2/1017. Convert to Base -2_test.go new file mode 100644 index 00000000..f016c590 --- /dev/null +++ b/Algorithms/1017. Convert to Base -2/1017. Convert to Base -2_test.go @@ -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") +} diff --git a/Algorithms/1017. Convert to Base -2/README.md b/Algorithms/1017. Convert to Base -2/README.md new file mode 100755 index 00000000..7c4bbfdd --- /dev/null +++ b/Algorithms/1017. Convert to Base -2/README.md @@ -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 进制的数 +- 这一题仿造十进制转二进制的思路,短除法即可。 +