Leetcode 回文数

下面是解决这个回文数问题的一个Java解法:

代码解释

  1. 特殊情况处理
    • 如果数字是负数,直接返回false,因为负数不可能是回文数。
    • 如果数字以0结尾,但不是0本身,也不可能是回文数(例如10不是回文数)。
  2. 核心逻辑
    • 利用反转数字的一半来判断是否是回文数。
    • 每次取x的最后一位数字,将其添加到反转的数字revertedNumber中。
    • 同时将x缩小为去掉最后一位后的数字。
    • 当原始数字x小于或等于revertedNumber时,说明已经处理了一半或更多。
  3. 回文判断
    • 如果数字的长度是偶数,x应该等于revertedNumber
    • 如果数字的长度是奇数,x应该等于revertedNumber / 10(因为反转数字会多一位)。

示例

  • 输入:x = 121

    输出:true

  • 输入:x = -121

    输出:false

  • 输入:x = 10

    输出:false

这个解法的时间复杂度是O(log10(n)),空间复杂度是O(1)。

java 复制代码
class Solution {
    public boolean isPalindrome(int x) {
        //首先处理特殊情况,负数和以0结尾的非0元素必然不是回文数
        if(x < 0 || (x % 10 == 0 && x != 0)) return false;

        //然后将该数字反转
        int revertedNum = 0;
        while(x > revertedNum) {
            revertedNum = revertedNum * 10 + x % 10;
            x /= 10;
        }
        return (x == revertedNum || x == revertedNum / 10);
    }
}
相关推荐
杉之38 分钟前
快速排序笔记
数据结构·算法·排序算法
百渡ovO1 小时前
【蓝桥杯】十五届省赛B组c++
数据结构·c++·算法
梭七y1 小时前
【力扣hot100题】(072)柱状图中的最大矩阵
算法·leetcode·职场和发展
Dovis(誓平步青云)1 小时前
【数据结构】排序算法(下篇·开端)·深剖数据难点
c语言·数据结构·学习·算法·排序算法·推荐算法
CopyLower1 小时前
Automattic 裁员16%,Matt Mullenweg称此举旨在提升盈利能力并增强投资实力
面试·职场和发展
余华余华1 小时前
2024年蓝桥杯Java B组省赛真题超详解析-最优分组
java·职场和发展·蓝桥杯
浪漫血液&1 小时前
OJ--第N个泰波那契数列
算法·动态规划
独好紫罗兰1 小时前
洛谷题单3-P1307 [NOIP 2011 普及组] 数字反转-python-流程图重构
开发语言·python·算法
2301_789015621 小时前
算法与数据结构线性表之栈和队列
数据结构·算法
ん贤2 小时前
2022第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(题解&解析)
c语言·数据结构·c++·算法·蓝桥杯