文章目录
- 1 题目描述
- 2 测试用例
- 3 解题思路
- 3.1 解法 1:
1 题目描述
给你一个整数 x
, 如果 x
是一个回文整数, 返回 true
;否则, 返回 false
.
回文数是指正序 (从左向右) 和倒序 (从右向左) 读都是一样的整数.
例如, 121
是回文, 而 123
不是
2 测试用例
**示例 1: **
输入:x = 121
输出:true
**示例 2: **
输入:x = -121
输出:false
**解释: ** 从左向右读, 为-121. 从右向左读, 为 121-. 因此它不是一个回文数
**示例 3: **
输入:x = 10
输出:false
**解释: ** 从右向左读, 为 01. 因此它不是一个回文数
3 解题思路
- 判断入参是否为负数, 负数不是回文数
- 定义变量
res
存储反转后的结果, 遍历入参取出最后一位int temp = x % 10
, 然后把res = res * 10 + temp
- 对比原始数据是否等于反转后的数据, 来判断是否为回文数
3.1 解法 1:
public boolean isPalindrome(int x) { // 负数不是回文数 if (x < 0) { return false; } // 将原始数 x 保存到 data 中 int data = x; // 反转后的数 int res = 0; while (x > 0) { // 取出最后一位 int temp = x % 10; if (res > Integer.MAX_VALUE || (res == Integer.MAX_VALUE && temp > 7)) { return false; } // 将最后一位放到最前面, 例如: 123 -> 321 res = res * 10 + temp; // 去掉最后一位 x /= 10; } // 如果反转后的数和原始数相等,则说明是回文数 return res == data;
}