前言
1. 描述
给定一个整数 x
,如果 x
是回文整数,则返回 true
。
当一个整数向后读与向前读相同时,它就是回文。例如,121
是回文,而 123
不是。
2. 示例
示例 1
代码语言:javascript复制输入: x = 121
输出: 真
示例 2
代码语言:javascript复制输入: x = -121
输出: 假
说明: 从左到右依次为 -121。 从右到左,它变成 121-。 因此它不是回文。
示例 3
代码语言:javascript复制输入:x = 10
输出: 假
说明: 从右到左读取 01。 因此它不是回文。
示例 4
代码语言:javascript复制输入:x = -101
输出: 假
约束条件:
- -2^31 <= x <= 2^31 - 1
**跟进:**你能在不将整数转换为字符串的情况下解决它吗?
3. 答案
代码语言:javascript复制class PalindromeNumber {
func isPalindrome(x: Int) -> Bool {
guard x >= 0 else {
return false
}
var x = x
var div = 1
while (x / div >= 10) {
div = div * 10
}
while (x > 0) {
var left = x / div
var right = x % 10
if (left != right) {
return false
}
x = (x % div) / 10
div = div / 100
}
return true
}
}
- 主要思想:负数不是回文。
- 时间复杂度:O(1)
- 空间复杂度:O(1)
该算法题解的仓库:LeetCode-Swift[2]
点击前往 LeetCode[3] 练习
参考资料
[1]
@故胤道长: https://m.weibo.cn/u/1827884772
[2]
LeetCode-Swift: https://github.com/soapyigu/LeetCode-Swift
[3]
LeetCode: https://leetcode.com/problems/palindrome-number/