算法题笔记-easy难度-02回文数(leetcode第9题)

166 阅读1分钟

题目地址:leetcode-cn.com/problems/pa…

思路:这道题有两种思路:

  • 可以把数值转成字符串,然后利用双指针的思路,一个指针从前往后,一个指针从后往前来比较每一个字符是否相等。
  • 可以利用数学思想,将传进来的值转换成他自身的回文数,然后和原值进行比较。转换思路是将原值先对10取余,取出个位数,然后将原值除以10,继续这个操作。

上代码:

转字符串思路:

class Solution {
    public boolean isPalindrome(int x) {
        if(x < 0) {
            return false;
        }
        String str = String.valueOf(x);
        int i = 0;
        int j = str.length() - 1;
        while(i < j) {
            if(str.charAt(i) != str.charAt(j)) {
                return false;
            }
            i++;
            j--;
        }
        return true;
    }
}

数学思路:

class Solution {
    public boolean isPalindrome(int x) {
        if(x <0) {
            return false;
        }
        int num = x;
        int nowNum = 0;
        while(num != 0) {
            nowNum = nowNum*10 + num%10;
            num = num/10;
        }
        return x==nowNum;
    }
}