Inversión de enteros (Go, LeetCode)

Tabla de contenido

Descripción del Título

solución

Código

Tutorial de código

Portal


 

Descripción del Título

Dado un entero de 32 bits con signo, debe invertir los dígitos de cada bit del entero. Para números de 32 bits desbordados, se devuelve 0.

Descripción de entrada / salida

ingresar 321
Producción 123

 

solución

El tema es relativamente simple y debes prestar atención a dos lugares:

  • El número ingresado puede ser negativo. El número negativo sigue siendo negativo después de la inversión
  • Si el número invertido supera los 32 bits, debe devolver 0

 

Código

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
}

 

Tutorial de código

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
}

 

Portal

Enlace a la pregunta de prueba de LeetCode

Supongo que te gusta

Origin blog.csdn.net/TCatTime/article/details/108000596
Recomendado
Clasificación