[LeetCode 题解]:Palindrome Number
前言
【LeetCode 题解】系列传送门: http://www.cnblogs.com/double-win/category/573499.html
1.题目描述
Determine whether an integer is a palindrome. Do this without extra space.
Some hints:
Could negative integers be palindromes? (ie, -1)
If you are thinking of converting the integer to string, note the restriction of using extra space.
You could also try reversing an integer. However, if you have solved the problem "Reverse Integer", you know that the reversed integer might overflow. How would you handle such case?
There is a more generic way of solving this problem.
2. 题意
判断一个整数是否是回文数。要求使用常量空间。
提示:
(1)负数是否是回文数?
(2)注意常量空间复杂度。将数字转换成字符串是不可行的。
3. 思路
如果将整个数字转换再判断是否是回文数,那么就可能出现反转之后的数字越界。
延续这个思路,能否通过某些技巧来避免越界呢?先看下面的例子:
(1) 1234321 / 12344321
将数字分成等长的两部分: 1234 和 4321。那么可以看出 4321 反转之后的数字为1234. 两者相等,所以1234321为回文数。
(2) 12345321
将数字分成等长的两部分: 1234 和 5321。那么可以看出 5321 反转之后的数字为1235.
由于1234!=1235,所以12345321不是回文数。
从上面两个例子可以看出。在处理一个数字是否是回文数的过程中,没有必要将整个数字反转。而只需要判断数字的前后等长的两部分时候相等即可。
那么如何在常量空间复杂度内,将数字分成前后两部分呢?
记 需要判断的数字为x,其前一部分为firstpart=x,后一部分为secondpart=0.
采取依次取firstpart的末位,将其添加到secondpart的尾部的方式,直到firstpart<=secondpart.
| firstpart | secondpart |
| 1234321 | 0 |
| 123432 | 1 |
| 12343 | 12 |
| 1234 | 123 |
| 123 | 1234 |
当firstpart<secondpart时,只需反过来将secondpart最后一位转移到firstpart末位即可。
tmp=1234%10=4;
firstpart=firstpart*10+tmp=123*10+4=1234。
此时secondpart也为1234.
因此1234321为回文数。
4: 解法
class Solution {
public:
bool isPalindrome(int x) {
int first=x,second=0,tmp;
if(x==0) return true; //zero
if(x<0|| x%10==0) return false; //negative number or the number is dividable by 10
while(first>second){ // reverse the number
tmp=first%10;
second= second*10+tmp;
first/=10;
}
if(first==second) return true;
else{ // handle the number with odd digits
tmp = second%10;
first=first*10+tmp;
if(first==second) return true;
else return false;
}
return false;
}
};[LeetCode 题解]:Palindrome Number的更多相关文章
- leetcode题解||Palindrome Number问题
problem: Determine whether an integer is a palindrome. Do this without extra space. click to show sp ...
- LeetCode题解——Palindrome Number
题目: 判断一个数字是不是回文数字,即最高位与最低位相同,次高位与次低位相同,... 解法: 求出数字的位数,然后依次求商和求余判断是否相等. 代码: class Solution { public: ...
- Leetcode 9. Palindrome Number(水)
9. Palindrome Number Easy Determine whether an integer is a palindrome. An integer is a palindrome w ...
- Leetcode练习题 Palindrome Number
9. Palindrome Number Question: Determine whether an integer is a palindrome. An integer is a palindr ...
- leetcode 9 Palindrome Number 回文数
Determine whether an integer is a palindrome. Do this without extra space. click to show spoilers. S ...
- LeetCode 9. Palindrome Number (回文数字)
Determine whether an integer is a palindrome. Do this without extra space. 题目标签:Math 题目给了我们一个int x, ...
- Leetcode 9. Palindrome Number(判断回文数字)
Determine whether an integer is a palindrome. Do this without extra space.(不要使用额外的空间) Some hints: Co ...
- [LeetCode][Python]Palindrome Number
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com'https://oj.leetcode.com/problems/palindr ...
- LeetCode——9. Palindrome Number
一.题目链接:https://leetcode.com/problems/palindrome-number/ 二.题目大意: 给定一个整数,判断它是否为一个回文数.(例如-12,它就不是一个回文数: ...
- 蜗牛慢慢爬 LeetCode 9. Palindrome Number [Difficulty: Easy]
题目 Determine whether an integer is a palindrome. Do this without extra space. Some hints: Could nega ...
随机推荐
- pip & Jinja2
[pip&Jinja2] 2.7.9 以及上版本的 python 安装程序会自动安装 pip. 升级:pip install --upgrade pip. 使用pip安装Jinja2:sudo ...
- 第八章 高级搜索树 (xa3)红黑树:插入
- VMware Ubuntu 窗口太小 未安装VMwareTools
安装vmtools就行了:在虚拟机点击重新安装vmtools. 在虚拟机里点开挂载的,将那个压缩文件拉出document,解压 在命令行sudo运行.pl结尾的文件,一路回车就行了. 重启即可.
- 爬楼梯 · Climbing Stairs
[抄题]: 假设你正在爬楼梯,需要n步你才能到达顶部.但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部? [思维问题]: 不知道一步.两步怎么加.还是用iteration迭代.此题公式可被 ...
- 15-matlab矩阵运用
from scipy.spatial import Delaunay from mpl_toolkits.mplot3d import Axes3D import numpy as np import ...
- DataTable学习笔记---排序细则、列隐藏
耽误了好几天,因为要做一个嵌入式的实验-android内核编译与裁剪,很久之前装的wubi不知道为什么运行出错了,然后看着当前的win7系统觉得有点讨厌了,也是因为快1年半没装机了,所以就重新装机了, ...
- Spring框架的AOP技术(注解方式)
1. 步骤一:创建JavaWEB项目,引入具体的开发的jar包 * 先引入Spring框架开发的基本开发包 * 再引入Spring框架的AOP的开发包 * spring的传统AOP的开发的包 * sp ...
- 【原创】有关Silverlight中自动生成的类中 没有WCF层edmx模型新加入的对象 原因分析。
前端页面层: 编译老是不通过,报如下如所示错误: -- 然后下意识的查了下 生成的cs文件,没有搜到根据edmx 生成的 对应的类. 结果整理: 1.尽管在 edmx 模 ...
- NABCD模型--软件工程
1.N (Need 需求) 我们通过网络调查问卷的方式,收集样本数据,并对其进行分析和总结. 1.你是否为在校学生? 7.如果用过,你觉得还应该需要添加什么功能 通过调查发现,大多数学生并不是特别了解 ...
- TYVJ 1940 创世纪
Description: 上帝手中有着 N 种被称作“世界元素”的东西,现在他要把它们中的一部分投放到一个新的空间中去以建造世界.每 种世界元素都可以限制另外一种世界元素,所以说上帝希望所有被投放的世 ...