Leetcode第九题 回文数 难度:简单
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例一
输入: 121
输出: true
示例二
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例三
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
1.我的思路
整数分两种情况
第一种,是负数,返回false
第二种,是非负整数,根据条件判断,首先获取到每个整数中的每个元素,然后放进集合中,判断对称位置的元素值是否相同,如果有一个不同,即为false。
class Solution {
public boolean isPalindrome(int x) {
List<Integer> list = new ArrayList<Integer>();
boolean flag = true;
if (x<0){
flag=false;
}
if(x>=0){
while(x>0){
list.add(x%10);
x/=10;
}
for (int i = 0;i<list.size()/2;i++){
if (!list.get(i).equals(list.get(list.size()-i-1))){
flag = false;
}
}
}
return flag;
}
}
执行结果:
通过
显示详情
执行用时:11 ms, 在所有 Java 提交中击败了47.24%的用户
内存消耗:37.7 MB, 在所有 Java 提交中击败了91.11%的用户
2.官方解法
我们有另一种解法是把数字反转,判断反转后的数字是否和反转前的数字相等即可。
官方解法比这种数字反转的优点在于只需要反转一半,判断和另一半的数字是否相等即可。