
方法1: 先convert to string,然后two pointer。时间复杂log10(x)x为input。空间复杂1。
class Solution {
public boolean isPalindrome(int x) {
String str = String.valueOf(x);
int start = 0;
int end = str.length() - 1;
while(start < end){
if(str.charAt(start++) != str.charAt(end--)){
return false;
}
}
return true;
}
}
方法2: 从后往前遍历input,构建一个新的数字,注意这个数字构建到input的后半部分完成就好了,因为如果是palindrome的话此时input是前半部分,咱们构建的数字是后半部分,此时这两部分应该已经相等,就不用再进行多余的操作了。时间复杂log10(x)x为input。空间复杂1.
class Solution{
public boolean isPalindrome(int x){
if (x < 0 || (x > 0 && x%10 == 0)) {
return false;
}
int num = 0;
while (x > num) { // construct only half
num = num * 10 + x % 10;
x /= 10;
}
return x == num || num/10 == x;
}
}
总结:
- 无
博客介绍了判断回文数的两种方法。方法一是将输入转换为字符串,用双指针法,时间复杂度为log10(x),空间复杂度为1;方法二是从后往前遍历输入构建新数字,构建到后半部分完成即可,时间和空间复杂度与方法一相同。
630

被折叠的 条评论
为什么被折叠?



