啥也不废话,今儿是第一周,撸起袖子加油干!
目录
9. 回文数判断——2023.10.30
题目要求
给你一个整数 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
进阶:你能不将整数转为字符串来解决这个问题吗?
代码模版:
class Solution {
public boolean isPalindrome(int x) {
}
}
分析与代码解决
个人分析:
1. 首先复数不是回文数,在代码的最开始我们就要取 if 排除
2. 如何去对比去回文数呢,我的想法是定义一个整型num,把获取到的x完整的赋值在这个num中,再和x去做的比较,符合就是ture,不符合就是false
3. 怎么去把 x 值上的所有数字转到num上呢,我用的就是用while循环去取模x值上的每一位值,从个位开始,取到一位,就转到num上,在x的基础上去 / 10,以为下一次循环做准备
代码给出
class Solution {
// 定义一个方法来判断一个整数是否为回文数
public boolean isPalindrome(int x) {
// 如果x小于0,直接返回false,因为负数不是回文数
if (x < 0){
return false;
}
// 定义两个变量,temp为当前的x,num为最终的反向数字
int temp = x, num = 0;
// 使用while循环,当temp不为0时执行循环
while (temp != 0){
// 取temp的最后一位数字(取模10)并赋值给digit
int digit = temp % 10;
// 将temp除以10,将最后一位数字去掉并赋值给temp
temp = temp / 10;
// 将digit添加到num的末尾(将num乘以10再加上digit)
num = num * 10 + digit;
}
// 如果num等于x,说明x是回文数,返回true
if (num == x){
return true;
} else {
// 否则返回false,说明x不是回文数
return false;
}
}
}