将十进制整数转换为字符串实现(Go)

目录

描述

解决方案

代码

代码走读


 

描述

实现将十进制整数转换为字符串(不使用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)
}

你可能感兴趣的:(Go,go)