Leetcode 9 Palindrome Number

HowieLee59發表於2018-10-04

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

Example 1:

Input: 121
Output: true

Example 2:

Input: -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.

Example 3:

Input: 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.

Follow up:

Coud you solve it without converting the integer to a string?

題意即為判斷是否是迴文數,可以使用棧和佇列進行實現或者是使用遞迴來實現

《one》

import java.util.*;
class Solution {
    public boolean isPalindrome(int x) {
        if(x < 0){
            return false;
        }
        int y = x;
        Queue<Integer> queue = new LinkedList<>();
        Stack<Integer> stack = new Stack<>();
        while(y != 0){
            queue.offer(y % 10);
            stack.push(y % 10);
            y /= 10;
        }
        while(!stack.isEmpty()&&!queue.isEmpty()){
            if(stack.pop() != queue.poll()){
                return false;
            }
        }
        return true;
    }
}

《Two》

    public boolean isPalindrome(int x) {
        // 如果是負數,或者10的整數倍,返回false
        if (x < 0 || x != 0 && x % 10 == 0)
            return false;
        int reverse = 0;
        while (x > reverse) {
            reverse = reverse * 10 + x % 10;
            x = x / 10;
        }
        return (reverse == x || reverse / 10 == x);
    }

 

相關文章