判断回文数
解题思路与整数反转使用的方法有异曲同工之妙,关键是循环退出条件的判断。才是最妙的地方。
package leetcode.editor.cn;
//判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
//
// 示例 1:
//
// 输入: 121
//输出: true
//
//
// 示例 2:
//
// 输入: -121
//输出: false
//解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
//
//
// 示例 3:
//
// 输入: 10
//输出: false
//解释: 从右向左读, 为 01 。因此它不是一个回文数。
//
//
// 进阶:
//
// 你能不将整数转为字符串来解决这个问题吗?
// Related Topics 数学
public class PalindromeNumber{
public static void main(String[] args) {
Solution solution = new PalindromeNumber().new Solution();
}
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public boolean isPalindrome(int x) {
if( x < 0 || ( ( x % 10 == 0 ) && x != 0 ) ) return false;
int rev = 0;
while( x > rev ){
rev = rev * 10 + (x % 10);
x /= 10;
}
if( x == rev || x == rev / 10 )
return true;
else
return false;
}
}
//leetcode submit region end(Prohibit modification and deletion)
}
//解法一:
// if( x < 0 )
// return false;
// if( x < 10 )
// return true;
// if( x % 10 == 0 )
// return false;
// int num = x;
// int rev = 0;
// while( x != 0 )
// {
// int temp = x % 10;
// x /= 10;
// if(rev > Integer.MAX_VALUE) return false;
// if(rev < Integer.MIN_VALUE) return false;
// rev = rev * 10 + temp;
// }
// if( rev == num )
// return true;
// else
// return false;