博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 9. Palindrome Number
阅读量:5343 次
发布时间:2019-06-15

本文共 1434 字,大约阅读时间需要 4 分钟。

问题链接

题目解析

判断一个数字是否是回文数字。

解题思路

题目已经给出很多提示和注意事项,还要求不能使用额外空间,其实就是想说请直接在数字上操作,不能转换成字符串。另外题目说明直接反转数字会超出范围,其实用long long表示反转结果完全没问题,但是我们要理解出题人的意思——不可以反转!

可以一位一位进行比较,通过取整和取余可以获得对应位置的两个数字,进行比较即可。

参考代码

class Solution {public:    bool isPalindrome(int x) {        if (x < 0) return false;                int div = 1;        while (x / div >= 10) div *= 10;        while (x > 0) {            int l = x / div;            int r = x % 10;            if (l != r) return false;            x = (x % div) / 10;            div /= 100;        }        return true;    }};

官方解法

官方链接:

为了避免反转之后超出范围,采用反转一半数字的方法,也可以比较得出结果。官方是C#代码,这里改写成C++,二者一模一样哈哈哈。

什么时候确定已经达到一半了呢?比较x小于revertedNumber的时候就是了。还需要注意一个问题,数字如果是奇数位的话,得到的revertedNumber将会是x的10倍。然后又发现这样过不了样例数字“10”,那就在最初判断数字时剔除这种情况即可。

Complexity Analysis

Time complexity : \(O(log_{10}n)\). We divided the input by 10 for every iteration, so the time complexity is \(O(log_{10} n)\)

Space complexity : \(O(1)\).

参考代码

class Solution {public:    bool isPalindrome(int x) {        if (x < 0 || (x%10 == 0 && x != 0))//注意判断条件            return false;                int revertedNumber = 0;        while(x > revertedNumber) {            revertedNumber = revertedNumber * 10 + x % 10;            x /= 10;        }                return x == revertedNumber || x == revertedNumber/10;//两种情况    }};

本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.


转载于:https://www.cnblogs.com/AlvinZH/p/8543670.html

你可能感兴趣的文章
thinkphp如何实现伪静态
查看>>
BZOJ 2243: [SDOI2011]染色( 树链剖分 )
查看>>
BZOJ 1925: [Sdoi2010]地精部落( dp )
查看>>
c++中的string常用函数用法总结!
查看>>
[DLX精确覆盖+打表] hdu 2518 Dominoes
查看>>
SuperMap iServerJava 6R扩展领域开发及压力测试---判断点在那个面内(1)
查看>>
Week03-面向对象入门
查看>>
一个控制台程序,模拟机器人对话
查看>>
web.xml 中加载顺序
查看>>
pycharm激活地址
查看>>
hdu 1207 四柱汉诺塔
查看>>
Vue 2.x + Webpack 3.x + Nodejs 多页面项目框架(上篇——纯前端多页面)
查看>>
我的PHP学习之路
查看>>
【题解】luogu p2340 奶牛会展
查看>>
对PostgreSQL的 SPI_prepare 的理解。
查看>>
解决响应式布局下兼容性的问题
查看>>
使用DBCP连接池对连接进行管理
查看>>
【洛谷】【堆+模拟】P2278 操作系统
查看>>
hdu3307 欧拉函数
查看>>
Spring Bean InitializingBean和DisposableBean实例
查看>>