LeetCode9 回文数

Posted by Think different. on November 21, 2020

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.官方解法

我们有另一种解法是把数字反转,判断反转后的数字是否和反转前的数字相等即可。

官方解法比这种数字反转的优点在于只需要反转一半,判断和另一半的数字是否相等即可。