首页 > 代码库 > Leetcode:Palindrome Number

Leetcode:Palindrome Number

题目大意是提供一个32位整数,判断这个数的十进制字符串形式是否是回文。所谓的回文就是字符串的逆序形式与正序形式完全一致。比如123不等于321不符合条件,121等于121符合条件,当然-1不等于1-也是不符合条件的。题目还限制了允许使用的存储空间。


 可以简单地利用另外一个32位整数m记录输入整数n的逆序形式,之后比较m是否等于n即可。时间复杂度和空间复杂度均可以认为是常数,故依旧是O(1)。

isPalindrome(n)

  if(n < 0)

    return false

  m = 0, tmp = n

  while(tmp >= 10)

    m =  m * 10 + tmp % 10

    tmp = tmp / 10

  return m == n / 10 && tmp == n % 10


 下面提供实现代码:

package cn.dalt.leetcode;

/**
 * Created by dalt on 2017/6/11.
 */
public class PalindromeNumber {
    public boolean isPalindrome(int x) {
        if (x < 0) {
            return false;
        }
        int tmp = x;
        int r = 0;
        while (tmp >= 10) {
            r = r * 10 + tmp % 10;
            tmp /= 10;
        }
        return r == x / 10 && tmp == x % 10;
    }
}

 

Leetcode:Palindrome Number