Problem: 9. 回文数
[TOC]
思路
看到这题的第一想法就是把数字x进行反转得到数字reverse,然后与x进行比较是否相等即可,刚开始我想的是把数字转成字符串然后使用反转函数直接反转,最后使用eqauls方法进行比较即可,但是我忘记了怎么将数字转换成String类型的字符串。后来遍知道一个数一个数字进行翻转
解题方法
由题可知x<0的时候因为含有负号,故所有小于0的数都不是回文数,直接return false即可,x>0的时候,我用一个temp表示x翻转后的数字,num用于x逐一翻转,直到num/10==0的时候说明翻转完成,得到的结果return num == x的结果即可。
但是,看了题解之后我发现其实翻转一半就行了,就算是奇数个位数,最后return reverse/10 == x即可
复杂度
时间复杂度:
O(logn)
空间复杂度:
O(1)
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class Solution { public boolean isPalindrome(int x) { if(x<0) return false; int temp = 0; int num = x; while(num!=0){ temp = temp*10+num%10; num = num/10; } return x == temp; } }
|
题解代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| class Solution { public boolean isPalindrome(int x) { if (x < 0 || (x % 10 == 0 && x != 0)) { return false; }
int revertedNumber = 0; while (x > revertedNumber) { revertedNumber = revertedNumber * 10 + x % 10; x /= 10; }
return x == revertedNumber || x == revertedNumber / 10; } }
作者:力扣官方题解 链接:https: 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
|