力扣9(java)-回文数(简单)
题目:
给你一个整数 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
进阶:你能不将整数转为字符串来解决这个问题吗?
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
一、运用数学思维
1.如果是负数,不是回文数,返回false;
2.如果是正数,把当前数的倒序数算出来(例如:123-->321),如果倒序数与当前数相等则说明是回文数(比如:121--> 121)返回true,不等则返回false;
代码:
二、数学方法进阶
1.首先如果为负数,肯定不是回文数,直接返回false;
2.0本身就是回文数,如果末尾数字为0(10的倍数,10,20,30....),则首个数字一定要为0(即为0本身)才会为回文,所以写成:x != 0 && x /10 ==0 这样直接返回false;
3.将整数进行反转,反转后的数字与原数字相同则是回文数,在反转时只用反转一半就可以判断是否为回文了。数字长度为偶数时,最终只需要判断 cur == x,数字长度为奇数时,最终通过 cur / 10去除掉中间的那一位,在与x进行判断是否相等即可。
代码: