LeetCode第9题---回文数
题目描述:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
1.首先负数就不是
2.其次尾部为0的整数也不是(除了0)
3.对于其他的正整数
我们只需要反转一半的数据,判断反转后的数据是否相等就可以了。
例如:232
我们把数拆开成两部分23------------2 最后23%2==2 || 23==2为真
class Solution {
/**
* 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
* @param x
* @return
*/
public boolean isPalindrome(int x) {
//小于0的数和尾部为0的数都不是回文数字
if(x<0||(x%10==0 && x!=0)) {
return false;
}
int num=0;
//反转一半的数字
while(x>num){
//数字反转
num=num*10+x%10;
x/=10;
}
//判断一半的数字是否相等
if(x==num || x==num/10){
return true;
}else{
return false;
}
}
}
总结:
这个题是简单题,求一个数是否为回文数,只需要反转一半的数就可以了。