- 时间:2020-05-07
- 题目链接:https://leetcode-cn.com/problems/palindrome-number
- tag:
回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
- 本题如果将数字转换成字符串是十分简单的,但是使用字符串会造成不必要的内存使用,因此考虑直接根据数字判断
- 首先。如果是负数的话,是不可能为回文数的,可以直接返回;同理,如果除0之外的数,如果末位为0也不可能为回文数,可以直接返回
- 思路:首先判断数字有多少位,然后按照和字符串类似的方法通过%和/位数的方法获得首尾的数字逐一判断
- 思路:
- 需要注意的一个点就是由于回文数的位数可奇可偶,所以当它的长度是偶数时,它对折过来应该是相等的;
- 当它的长度是奇数时,那么它对折过来后,有一个的长度需要去掉一位数(除以 10 并取整)
- 如果判断是否取了一般数字呢?
- 将原始数字除以 10,然后给反转后的数字乘上 10,所以,当原始数字小于反转后的数字时,就意味着我们已经处理了一半位数的数字。
class Solution {
public boolean isPalindrome(int x) {
if (x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}
int reverseNum = 0;
while(x > reverseNum) {
reverseNum = reverseNum * 10 + x % 10;
x = x / 10;
}
return x == reverseNum || x == reverseNum / 10;
}
}
暂无