title: leetcode-9-回文数
date: 2019-08-31 08:42:55
categories:
- leetcode
tags: - leetcode
回文数
-
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:你能不将整数转为字符串来解决这个问题吗?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 -
题解:首先判断和0的大小关系,负数进行return,反之 把数字的每一位都取出来,看看能否返回值等于原来的值
class Solution { public boolean isPalindrome(int x) { int number = x; int sum = 0; int rest; if(x<0) return false; while(x!=0) { rest = x%10; sum = sum*10+rest; x=x/10; } return number==sum?true:false; } }
-
第二种题解,对第一种题解进行优化,只是反转后半部分
public boolean isPalindrome(int x) {
if(x<0||(x%10==0&&x!=0))
return false;
int midNumber = 0;
while(x>midNumber)//判断是否反转了一半
{
midNumber = midNumber*10+x%10;
x = x/10;
}
//有两种最终情况12321反转123,1221反转12,所以需要判断
return x==midNumber||x==midNumber/10;
}