Написано: 25.02.2023

9. Числовой палиндром (Palindrome Number)

easy

Задание.

Дано целое число x.

Нужно вернуть true, если x является палиндромом, и false в противном случае.

Палиндром – это число, которое одинаково читается в прямом и обратном направлении.

Пример 1.

Входные данные: x = 121

Результат: true

Пояснение: 121 читается как 121 слева направо и справа налево.

Пример 2.

Входные данные: x = -121

Результат: false

Пояснение: Не палиндром, потому что слева направо написано -121, а справа налево это становится 121-.

Пример 3.

Входные данные: x = 10

Результат: false

Пояснение: Справа налево читается 01. Следовательно, это не палиндром.

Решение.

class Solution {
public:
    bool isPalindrome(int x) {
        stack<int> st;
        if(x<0) {
            return false;
        }
        int y = x;

        // цифры x направляются в стек
        while(x) {
            st.push(x%10);
            x /= 10;
        }

        // цифры извлекаются из стека и сравниваются с цифрами числа
        while(y) {
            if(st.top() != (y%10)) {
            return false;
            }
            st.pop();
            y /= 10;
        }

        return true;
    }
};