回文数(Go,LeetCode)

该博客讨论了如何使用Go语言解决LeetCode上的回文数问题。文章首先介绍了回文数的概念,然后通过示例解释了判断一个整数是否为回文数的方法。接着,提供了将数字转换为字符串并比较其正反序是否相同的代码实现,并提供了代码走读的详细解析。最后,给出了LeetCode试题的具体链接供读者进一步学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

题目描述

解决方案

代码

代码走读

传送门


题目描述

判断一个整数是否是回文数。回文数是指正序(从左到右)和逆序(从右到左)都是一样的整数。

输入/输出示例

输入-121
输出false
解释因为-121的逆序是121-,与121不同,因此不是回文数。

解决方案

经过观察可以判断出,负数一定不是回文数。自然数中,小于10以下的数字都是回文数。对于大于等于10以上的正整数,我们将其转换为字符串,从两端读取字符,判断其是否相等,若一直保持相等,则为回文数。

代码

package main

import (
	"fmt"
	"strconv"
)

func isPalindrome(x int) bool {
	if x < 0 { return false }

	if x >= 0 && x <= 9 { return true }

	sString := strconv.Itoa(x)

	length := len(sString)
	palindrome := true
	for i := range sString {
		j := length - 1 - i
		if i > j {
			break
		}

		if sString[i] != sString[j] {
			palindrome = false
			break
		}
	}
	return palindrome
}

代码走读

package main

import (
   "strconv"
)

func isPalindrome(x int) bool {
   // 如果x为负数,肯定不是回文数
   if x < 0 { return false }

   // 如果x为一位数,则肯定是回文数
   if x >= 0 && x <= 9 { return true }

   // 将x转换为字符串,使用左右两个指针检查每位数是否相等。若其中一个不相等则跳出循环并返回false
   sString := strconv.Itoa(x)

   length := len(sString)
   palindrome := true
   for i := range sString {
      j := length - 1 - i
      if i > j {
         break
      }

      if sString[i] != sString[j] {
         palindrome = false
         break
      }
   }
   return palindrome
}

传送门

LeetCode试题连接icon-default.png?t=L892https://leetcode-cn.com/problems/palindrome-number/submissions/

strconv.Itoa函数icon-default.png?t=L892https://blog.youkuaiyun.com/TCatTime/article/details/120108417

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值