我的思路:首先,求出x的位数,然后用一个数组存储其每一位的数字。接下来,用一个for循环判断是否回文。注意,这里如果得到的数组中的数字是从个位开始到最高位排序的。如果不用for循环判断是否回文,而是将数组中第一个数字作为最高位来求出该数组表示的一个数,会出现溢出的问题,且时间复杂度要更高。
代码:
class Solution {
public boolean isPalindrome(int x) {
if(x<0)
return false;
int y=x,k=1;
while(y>=10){
y/=10;
k++;
}
int[]arr=new int[k];
int z=x;
for(int i=0;i<k;i++){
arr[i]=z%10;
z/=10;
}
boolean flag=true;
for(int i=0;i<k/2;i++)//判断是否回文的for循环
if(arr[i]!=arr[k-i-1]){
flag=false;
break;
}
return flag;
}
}
当前打败了100%JAVA用户的思路:直接用个循环求出倒过来的数的值,将其与原值比较看是否相等
class Solution {
public boolean isPalindrome(int x) {
if(x<0)
return false;
if(x<10)
return true;
int y=0,z=x;
while(z>0){//关键部分
y=y*10+z%10;
z/=10;
}
return x==y;
}
}
原文:https://www.cnblogs.com/xbc121/p/11642290.html