《LeetBook》leetcode题解(9):Palindrome Number[E]——回文数字
来源:互联网 发布:什么网络歌手唱歌好听 编辑:程序博客网 时间:2024/05/29 09:00
我现在在做一个叫《leetbook》的开源书项目,把解题思路都同步更新到github上了,需要的同学可以去看看
地址:https://github.com/hk029/leetcode
这个是书的地址:https://hk029.gitbooks.io/leetbook/
009. Palindrome Number[E]
问题:
Determine whether an integer is a palindrome. Do this without extra space.
思路
这里说不用额外的空间意思是不用O(n)的空间,O(1)的还是可以用的,不然循环都不好写。。
思路1
简单的思路 就是把数字逆转,然后判断逆转后的数字跟原来数字是不是一样的。
class Solution {public: bool isPalindrome(int x) { if(x < 0) return false; int r=0,t; t = x; while(t != 0) { r =r*10 + t%10; t /=10; } return r == x; }};
思路2
但是其实,不用把数字逆转完再判断,因为如果是回文数字,那么只要逆转一半看是否满足回文条件就行了。
设新数为r,原来数为x,每次:
x = x/10,r = r*10 + x%10;
如何到一半停止?
- 如果x <= r时可以停止了(至少到了一半)
- 如果是偶数长度,并且是回文,那么刚好可以到x == r
- 如果为奇数长度,并且是回文,那么x < r,这时候r刚好比x多一位数
停止后判断是否是回文
- 如果是偶数长度,很简单判断 r == x
- 如果是奇数长度,要判断 r/10 == x
注意:这里有一些小问题。
当尾数为0的情况。尾数为0会导致r的增长少1位数(因为0*10 = 0)。
比如:110不是回文,最后停止r = 1 x =1 但是 r == x
当数字小于0的时候,也是不满足回文的条件的。
class Solution {public: bool isPalindrome(int x) { if(x < 0 || (x != 0 && x %10 ==0)) return false; int r = 0; while(x > r) { r =r*10 + x%10; x /=10; } return (r == x) || (r/10 == x); }};
0 0
- 《LeetBook》leetcode题解(9):Palindrome Number[E]——回文数字
- LeetCode—Palindrome Number 数字是否是回文数字
- [LeetCode 9] Palindrome Number -- 回文数字
- LeetCode 9 Palindrome Number 回文数字
- Leetcode刷题记——9. Palindrome Number(回文数字)
- [LeetCode] 回文数字 Palindrome Number
- LeetCode题解——9Palindrome Number
- 《LeetBook》leetcode题解(5):Longest Palindromic [M]——回文串判断
- 【leetcode题解】【28】【E】Palindrome Number
- 《LeetBook》LeetCode题解(1) : Two Sum[E]——哈希Map的应用
- 《LeetBook》leetcode题解(7): Reverse Integer[E]——处理溢出的技巧
- 《LeetBook》leetcode题解(8): String to Integer (atoi) [E]——正负号处理
- 《LeetBook》leetcode题解(20):Valid Parentheses[E]——栈解决括号匹配问题
- 《LeetBook》leetcode题解(6): ZigZag Conversion[E]
- LeetCode | Palindrome Number(回文数字)
- LeetCode (30) Palindrome Number (回文数字)
- LeetCode 9. Palindrome Number(回文数字)
- LeetCode-9.Palindrome Number(求回文数字)
- 数据库知识
- Android关于PagerAdapter的使用方法的总结
- SQLite 设计与概念
- nodejs学习笔记2
- hdu4723 How Long Do You Have to Draw 贪心
- 《LeetBook》leetcode题解(9):Palindrome Number[E]——回文数字
- LeetCode 137 -Single Number II ( JAVA )
- JSTL中forEach标签中varStatus属性名列表
- MVC4.0 使用WebUploader上传文件实例,支持大视频上传
- 冒泡排序原理分析及Java实现
- win8安装Mac10.10
- ASCII表的使用
- expdp/impdp数据泵和RMAN全库备份shell脚本各一则
- YARN 简介