未分類

Base 7

Base 7

Given an integer, return its base 7 string representation.

Example 1:

1
2
Input: 100
Output: "202"

Example 2:

1
2
Input: -7
Output: "-10"

Note:

The input will be in range of [-1e7, 1e7].

Default:

1
2
3
func convertToBase7(num int) string {
}

解答思路:

這題需要你將10進制轉成7進制,其中負數的10進制轉為7進制時一樣保留負的符號,所以如果值為負數先將其轉為正數後,待值轉為7進制再將符號加回字串之中,至於正數的10進制要轉7進制就是不斷的除以7取餘數,並將餘數轉成字串放入結果開頭之中,最後不斷的將商數重覆上述動作直到商數歸0為止。

程式碼解說:

一開始先判斷該數是否為負數,如果是就先標注其為負數並先將其轉為正數,如果該數為0就回傳”0”

1
2
3
4
5
6
7
8
var neg bool
var result string
if num < 0 {
neg = true
num *= -1
} else if num == 0 {
return "0"
}

再來就是不斷的將該數與7相除,並先將餘數加上48(ascii字串”0”為48)再強制轉為字串放入結果開頭,直到商數歸0才停止,最後如果先前有標註該數為負數的話,在字串開頭加上負的符號,否則就直接回傳結果

1
2
3
4
5
6
7
8
for num > 0 {
result = string((num%7)+48) + result
num = num / 7
}
if neg {
result = "-" + result
}
return result

完整程式碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
func convertToBase7(num int) string {
var neg bool
var result string
if num < 0 {
neg = true
num *= -1
} else if num == 0 {
return "0"
}
for num > 0 {
result = string((num%7)+48) + result
num = num / 7
}
if neg {
result = "-" + result
}
return result
}

總結:

要將10進制轉成7進制,且負數的10進制轉為7進制時需一樣保留負的符號,可以先直接將數字部分轉為7進制後,再把符號加回字串之中,至於10進制要轉7進制就是不斷的除以7取餘數,並將餘數轉成字串放入結果開頭之中,最後不斷的將商數重覆上述動作直到商數歸0為止。

分享到