1. 程式人生 > >Leetcode:Palindrome Number

Leetcode:Palindrome Number

log bool 利用 代碼 style create 簡單 完全 eat

題目大意是提供一個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