力扣09 判断一个数是否是回文数
题目:
给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121
是回文,而123
不是。
示例 1:
输入:x = 121
输出:true
示例 2:
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。
解法一:
解题思路:
可以先将数字转化为字符串类型然后借鉴双指针的思想(左右指针),一个左指针一个右指针分别从两头往中间走并判断两个指针所指的值是否相等如果相等就是回文数反之则不是。
代码:
/**
* 给定一个数字判定它是否是回文数,所谓回文数就是从左往右读与从右往左读都是一样
* 例如:121
*/
public class IsHuiWenNum01 {
//1.定义一个方法判定这个数字是否是回文数,返回值为boolean类型,参数为int
public static Boolean isHuiWenNum(int number){
//2.如果它是负数肯定就不是回文数
if(number < 0){
return false;
}
//2.1将这个数字转化为字符串
String s = Integer.toString(number);
//2.2我们可以使用双指针(左右指针)一个左指针一个右指针分别往中间走并判定这两个双指针是否相等
int left = 0;
int right = s.length()-1;
//3.进行循环左右指针往中间走
while (left <= right){
//3.1判断左右指针是否相等
if(s.charAt(left) != s.charAt(right)){
return false;
}
left ++;
right --;
}
return true;
}
}
解法二:
解题思路:
我们可以将给定的数字变换成它完全翻到过来的数字再判断与原来的数字是否相等如果相等就是回文数反之不是。
代码:
/**
* 不转换为字符串我们将这个数字想办法变成它从右往左读的数再与原来的数进行比较如果相等那么原来的这个数就是回文数
* 例如:123 要先右一个中间量来作为过度假如为 x = 0
* 第一步我们先取出各位上的数字:123 % 10 =3 2 1
* 第二步更新x的值为: x = x * 10 + 3 = 3 32 321
* 第三步取出除各位上的以外的数: 123 / 10 = 12 1 0
* 重复这三步骤直到第三步为0最后x的值就是原来数倒过来的数
*/
public class IsHuiWenNum02 {
//1.定义一个方法返回值为boolean类型参数为int类型
public static Boolean isHuiWenNum(int num){
//2.定义一个中间变量作为过度,定义一个变量作为num的中间量
int a = num;
int betweenNum = 0;
while (a != 0){
int lastNum = a % 10;
betweenNum = betweenNum * 10 + lastNum;
a = a / 10;
}
return betweenNum == num;
}
}
标签:10,数字,int,09,力扣,121,回文,指针
From: https://www.cnblogs.com/ygstudy/p/16946097.html