目錄
描述
實現將十進制整數轉換爲字符串(不使用strconv包)。
解決方案
將十進制整數從個位到最高位進行拆分,將每一個位數的數字轉換爲字符串後再進行拼接。注意整數的正負。
代碼
package main
func Itoa(number int) string {
result := ""
positive := true
if number < 0 {
positive = false
number = -number
}
for {
if number < 10 {
result = itoa(number) + result
break
}
temp := number % 10
result = itoa(temp) + result
number /= 10
}
if !positive {
result = "-" + result
}
return result
}
func itoa(number int) string {
switch number {
case 0:
return "0"
case 1:
return "1"
case 2:
return "2"
case 3:
return "3"
case 4:
return "4"
case 5:
return "5"
case 6:
return "6"
case 7:
return "7"
case 8:
return "8"
default:
return "9"
}
}
代碼走讀
package main import "fmt" func Itoa(number int) string { result := "" // positive用來記錄整數的正負性。爲了計算方便在記錄正負性後統一將整數轉換爲非負數。 positive := true if number < 0 { positive = false number = -number } for { if number < 10 { result = itoa(number) + result break } // 不斷取整數的末位轉換 temp := number % 10 result = itoa(temp) + result number /= 10 } // 最後對整數的正負性做判斷 if !positive { result = "-" + result } return result } // 將個位數轉換爲字符串 func itoa(number int) string { switch number { case 0: return "0" case 1: return "1" case 2: return "2" case 3: return "3" case 4: return "4" case 5: return "5" case 6: return "6" case 7: return "7" case 8: return "8" default: return "9" } } // 自測用例 func main() { number := 0 result := Itoa(number) fmt.Println(result) }