整数反転(Go、LeetCode)

目次

タイトル説明

解決

コード

コードウォークスルー

ポータル


 

タイトル説明

32ビットの符号付き整数を指定すると、整数の各ビットの桁を反転する必要があります。オーバーフローした32ビット数の場合、0が返されます。

入出力の説明

入る 321
出力 123

 

解決

トピックは比較的単純であり、2つの場所に注意を払う必要があります。

  • 入力した数値は負の数である可能性があります。反転後も負の数は負です
  • 反転数が32ビットを超える場合は、0を返す必要があります

 

コード

package main

import "strconv"

func reverse(x int) int {
	positive := true
	if x < 0 {
		positive = false
		x = -x
	}

	xStr := strconv.Itoa(x)
	resultStr := ""
	for i := len(xStr) - 1; i >= 0; i-- {
		resultStr += string(xStr[i])
	}

	result, _ := strconv.Atoi(resultStr)
	if !positive {
		result = -result
	}

	if result < -(1<<31) || result > (1<<31)-1 {
		result = 0
	}
	return result
}

 

コードウォークスルー

package main

import "strconv"

func reverse(x int) int {
   // 先判断x的正负性。记录后将x统一转换为正数(方便逆序)
   positive := true
   if x < 0 {
      positive = false
      x = -x
   }

   // 将x转换为字符串逆序,得到逆序后的字符串
   xStr := strconv.Itoa(x)
   resultStr := ""
   for i := len(xStr) - 1; i >= 0; i-- {
      resultStr += string(xStr[i])
   }

   // 根据先前记录的正负性,将逆序后的字符串还原为整数结果
   result, _ := strconv.Atoi(resultStr)
   if !positive {
      result = -result
   }

   // 判断是否溢出32位
   if result < -(1<<31) || result > (1<<31)-1 {
      result = 0
   }
   return result
}

 

ポータル

LeetCodeテストの質問リンク

おすすめ

転載: blog.csdn.net/TCatTime/article/details/108000596