9. 回文数
2022-04-30 本文已影响0人
Sun东辉
给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121
是回文,而123
不是。
示例 1:
输入:x = 121
输出:true
示例 2:
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。
提示:
-231 <= x <= 231 - 1
- 你能不将整数转为字符串来解决这个问题吗?
解题思路:动态规划
-
x < 0
一定不是回文 -
0 ≤ x < 10
一定是回文 - 将数字转换为数组,比较判断数组中的第一位和最后一位,依次递归
func isPalindrome(x int) bool {
if x < 0 {
return false
}
if x < 10 {
return true
}
list := []int{}
for x >= 10 {
list = append(list, x%10)
x = x / 10
}
list = append(list, x)
half := len(list) / 2
for i := 0; i <= half; i++ {
if list[i] != list[len(list)-1-i] {
return false
}
}
return true
}