算法日常・每日刷题

9. 回文数 - 力扣(LeetCode)9. 回文数 - 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 * 例如,121 是回文,而 123 不是。 示例 1:输入:x = 121输出:true示例 2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入:x = 10输出:false解释:从右向左读, 为 01 。因此它不是一个回文数。 提示: * -231 <= x <= 231 - 1 进阶:你能不将整数转为字符串来解决这个问题吗?https://leetcode.cn/problems/palindrome-number/

题目描述

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

  • 例如:121 是回文;-121 不是回文,负数带负号一定不可能回文;123 不是回文。

示例 1 输入:x = 121 输出:true
示例 2 输入:x = -121 输出:false


思路分析

栈:后进先出;队列:先进先出

  1. 负数直接返回false,负数不可能是回文。
  2. 将数字每一位拆开,同时压入栈、入队列
    • 取个位:tmp % 10
    • 去掉个位:tmp /= 10
  3. 栈取栈顶(最后存入的数字,相当于数字逆序);队列取队头(最先存入的数字,数字原顺序)。
  4. 逐位对比:一旦不相等,直接返回false;全部相等则为回文,返回true
cpp 复制代码
#include <stack>
#include <queue>
using namespace std;

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

        while(tmp>0)
        {
            st.push(tmp%10);
            q.push(tmp%10);
            tmp /= 10;
        }

        while(!st.empty())
        {
            if(st.top() != q.front())
                return false;
            st.pop();
            q.pop();
        }
        return true;
    }
};
相关推荐
lvwangshu30 分钟前
图论:LCA、树的直径、树的重心、二分图与 Tarjan 缩点
算法·图论
302wanger1 小时前
干与湿:AI 拿走脑力之后,人剩下什么
算法
计算机编程-吉哥2 小时前
脑肿瘤MRI智能识别系统:基于深度学习的像素级脑肿瘤语义分割平台【计算机毕业设计选题推荐】
人工智能·python·深度学习·算法·毕业设计·课程设计·大数据毕业设计选题推荐
用户204937554952 小时前
端侧语音部署踩坑:模型能跑不等于终端真的能用
后端·算法
shehuiyuelaiyuehao3 小时前
算法39,位运算,消失的两个数字
java·数据结构·算法
ZiLing3 小时前
2026 ROS 2 Lyrical 踩坑实录(一):编译与依赖——rosdep、现代 CMake 与 CMake 4.x
算法
Murphy_lx3 小时前
1124. 表现良好的最长时间段
c++·算法
aramae3 小时前
模拟实现strstr函数(C语言)
c语言·开发语言·算法
liliangcsdn3 小时前
因子权重矩阵处理-滞回缓冲带+降频稳定化动态重选
开发语言·python·算法
敲代码的嘎仔4 小时前
自己设计了一个兑换码算法:自增ID + Base32转码 + 按位加权签名 + 异或混淆,面试被追问细节时终于不用慌了
java·数据库·mysql·算法·微服务·面试·职场和发展