判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
思路
从最后一位开始取,组装一个新的数,判断两者是否相等
解法1
func isPalindrome(x int) bool {
if x < 0 {
return false
}
if x < 10 {
return true
}
r, o := 0, x
for x != 0 {
val := x % 10
r = r*10 + val
x = x / 10
}
return o == r
}
解法2
func isPalindrome(x int) bool {
if x < 0 {
return false
}
s := strconv.Itoa(x)
for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
if s[i] != s[j] {
return false
}
}
return true
}