public boolean isPalindrome(int x) {
if (x<0) return false;
List<Integer> list = new ArrayList<>();
while (x!=0){
list.add(x%10);
x=x/10;
}
int end = list.size()-1;
for (int start=0;start<list.size()/2;start++){
if (list.get(start)!=list.get(end)){
return false;
}
end--;
}
return true;
}
结果
info
解答成功:
执行耗时:6 ms,击败了56.12% 的Java用户
内存消耗:41.7 MB,击败了17.21% 的Java用户
思路:
两次遍历,能不能优化?
遍历的时候,能不能把数字反转了?
优化
public boolean isPalindrome(int x) {
if (x<0) return false;
int reverse = 0;
int c= x;
while (c!=0){
reverse = reverse*10 + c%10;
c=c/10;
}
return x==reverse;
}
结果
info
解答成功:
执行耗时:5 ms,击败了98.06% 的Java用户
内存消耗:41.6 MB,击败了22.98% 的Java用户