博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Leetcode] Palindrome Number 回文数
阅读量:5847 次
发布时间:2019-06-19

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

Palindrome Number

Determine whether an integer is a palindrome. Do this without extra space.

反转比较法 Reverse and Compare

复杂度

时间 O(n) 空间 O(1)

思路

回文数有一个特性,就是它反转后值是一样的。所以我们可以先将其反转,然后比较反转数和原数是否相等。该方法的问题在于溢出的判断和处理,我们可以参考中的几种处理方法。

代码

javapublic class Solution {    public boolean isPalindrome(int x) {        long reverse = 0, original = x;        if(x<0){            return false;        }        while(x>0){            reverse *= 10;            reverse += x % 10;            x /= 10;        }        return original == reverse;    }}

逐位比较法 One By One

复杂度

时间 O(n) 空间 O(1)

思路

反转比较有可能会溢出,但我们遍历每一位的时候其实并不用保存上一位的信息,只要和当前对应位相等就行了。所以我们可以遍历一遍先算出数的长度,再遍历一遍同时对比前后的对应位。

代码

javapublic class Solution {    public boolean isPalindrome(int x) {        if(x < 0){            return false;        }        int digits = 1;        int original = x;        // 计算当前数的位数,个位数不用计算,已经默认为1        while(x > 9){            digits *= 10;            x /= 10;        }        // 逐位比较        x = original;        while(x > 0){            int msd = x / digits;            int lsd = x % 10;            if(msd != lsd){                return false;            }            // 去除最高位和最低位            x -= msd * digits;            x /= 10;            digits /= 100;        }        return true;    }}

后续 Follow Up

Q:在答题之前我需要知道些什么?

A:因为回文的定义原本只适用于字符串,所以我们要先问清楚数字回文是如何定义的。首先,负数是否算回文。其次,在计算回文时,我们应该按十进制算还是其他进制,如二进制。

转载地址:http://qvzjx.baihongyu.com/

你可能感兴趣的文章
Modulus 正式开放 —— Node.js 应用托管平台
查看>>
. Embedding Python in Another Application¶
查看>>
应用开发中的Log技术(一) - 天河的日志 - 网易博客
查看>>
计算机 高可用性(负载均衡)-摘自网络
查看>>
Oracle64位问题(ODAC112021Xcopy_x64)
查看>>
什么值得买 » 体感神器?Leap Motion 运动控制器(Kinect的200倍精确度) $69.99预定(直邮中国运费$14.99)-Leap Motion-外设产品,新鲜物,海淘特价...
查看>>
前端文摘:最全的 CSS2.1 和 CSS3+ 的区别一览
查看>>
Console-算法-冒泡排序法|倒水法
查看>>
winform壁纸工具:为图片添加当月的日历并设为壁纸 .
查看>>
U盘写保护怎么办 ----->>>>>成功解除保护
查看>>
mysql严重查询速度的问题一则
查看>>
如何诊断ASMLIB故障
查看>>
10g ASM lost disk log
查看>>
Intent之Action
查看>>
Deep learning:十三(Softmax Regression)
查看>>
Sandcastle----强大的C#文档生成工具
查看>>
java调用dll
查看>>
Linux下C编程,进程通信之无名管道通信
查看>>
Jar命令
查看>>
分享:(R)?ex 0.41.0 发布,软件配置和部署
查看>>