import java.util.*;


public class Solution {
    /**
     * 
     * @param x int整型 
     * @return bool布尔型
     */
    public boolean isPalindrome (int x) {
        // write code here
        if (x < 0) { // 如果 x 是负数,那么 x 一定不是回文数字
            return false;
        }
        if (x >= 0 && x <= 9) { // 如果 x 在 [0, 9] 这个范围内的数字,那么 x 一定是回文数字
            return true;
        }
        boolean rs = true; // 定义一个 boolean 类型的变量,用于存放最终的返回结果(默认是 true)
        Queue<Integer> queue = new LinkedList<>();
        Stack<Integer> stack = new Stack<>();
        int tmp = x; // 定义一个整型变量,用于存放一个 x 的副本
        
        while (x != 0) {
            queue.add(x % 10); // 取余数,入队列
            stack.push(x % 10); // 取余数,压栈
            x = x / 10;
        }
        // 此时,队列当中存放的数据,是 x 的反向遍历的结果;栈当中存放的数据,是 x 的正向遍历的结果
        // 定义两个整型变量,用于临时存放从队列和栈中弹出的数据
        int t1 = 0;
        int t2 = 0;
        while (!queue.isEmpty() && !stack.isEmpty()) {
            t1 = queue.poll();
            t2 = stack.pop();
            if (t1 != t2) { // 如果 t1 不等于 t2,那么证明数字 x 不是回文数字
                rs = false;
                break;
            }
        }
        
        // 返回最终的结果
        return rs;
    }
}