leetcode 9 回文数

2019-12-08  本文已影响0人  justonemoretry

现有算法中涉及到整数处理的,一般是反转或者和字符串进行转换,反转一般是用%取余获取最后一位,用/取整舍去最后一位,再将取余得到的数不断乘以10就可以啦

class Solution {

    public boolean isPalindrome(int x) {

        if (x < 0) {

            return false;

        }

        int temp = x;

        int res = 0;

        while (temp > 0) {

            res = res * 10 + temp % 10;

            temp /= 10;        

        }

        return x == res;

    }

}

上面的解法,解决不了内存溢出的问题,下面这种只算一半的方法,可以避免这个问题,但没那么好理解

class Solution {

    public boolean isPalindrome(int x) {

        if (x < 0 || (x % 10 == 0 && x != 0)) {

            return false;

        }

        int res = 0;

        while (x > res) {

            res = res * 10 + x % 10;

            x /= 10;        

        }

      //   分别处理1221和121两种情况

        return x == res || x == res / 10;

    }

}

上一篇 下一篇

猜你喜欢

热点阅读