Palindrome Number

Problem

Given an integer x, return true if x is a palindrome , and false otherwise.

Example 1:

Input: x = 121
Output: true
Explanation: 121 reads as 121 from left to right and from right to left.

Example 2:

Input: x = -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: x = 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.

Constraints:

  • -231 <= x <= 231 - 1

Follow up: Could you solve it without converting the integer to a string?

Solution

Reversing

class Solution {
    public boolean isPalindrome(int x) {
        if (x < 0) {
            return false;
        }

        var copy = x;
        var rev = 0;

        while (copy > 0) {
            rev = (rev * 10) + copy % 10;
            copy = copy / 10;
        }

        while (x > 0 || rev > 0) {
            if (x % 10 != rev % 10) {
                return false;
            }
            x = x / 10;
            rev = rev / 10;
        }

        return x == 0 && rev == 0;
    }
}

Using a Deque

class Solution {
    public boolean isPalindrome(int x) {
        if (x < 0) {
            return false;
        }

        var dq = new LinkedList<Integer>();
        while (x > 0) {
            dq.addLast(x % 10);
            x = x / 10;
        }

        while (dq.size() > 1) {
            if (dq.pollFirst() != dq.pollLast()) {
                return false;
            }
        }

        return true;
    }
}

Recent posts from blogs that I like

Paintings of Saint-Tropez: Colour, boats and bathers 2

Paintings by Paul Signac, Maximilien Luce, and Pierre Bonnard showing fishing boats, trees and bathers near this smalll fishing village on the Mediterranean coast.

via The Eclectic Light Company

Run LLMs on macOS using llm-mlx and Apple's MLX framework

via Simon Willison

How to add a directory to your PATH

I was talking to a friend about how to add a directory to your PATH today. It’s something that feels “obvious” to me since I’ve been using the terminal for a long time, but when I searched for instructions for how to do it, I actually couldn’t find something that explained all of the steps – a lot o...

via Julia Evans