【LeetCode】9. Palindrome Number回文数判断
来源:互联网 发布:单片机红外发射 编辑:程序博客网 时间:2024/05/22 10:45
题目:
Determine whether an integer is a palindrome. Do this without extra space.
理解:
在不额外使用空间的情况下判断一个数是否为回文数,即各个位上的数字对称,如:12321。
分析:
由于不能使用额外的空间,因此不能使用将整数转换为字符串,再用回文字符串的方法来判断是否为回文数。
基本思路是:依次判断对称位置上的数是否相等。
基本方法:
1.若给定的整数x为负数,直接返回false;否则转2;
2.计算给定整数的位数bit,转3;
3.若给定整数x的位数bit=1,即为一位数,返回ture;否则转4;
4.判断x的第一位与最后一位数是否相同,若相等,转5,若不相等,返回false;
x第一位数计算方式为:x整除10的(bit-1)次方,即:x / (int)pow(10,bit-1),如12321,bit=5,第一为:12321/(10^4)=1。
x最后一位数计算方式为:x整除10的余数,即:x%10,如12321,最后一位为12321%10=1。
5.除掉x的第一位数和最后一位数,令bit=bit-2,转3;
除掉x的第一位数和最后一位数即使12321变为232.
计算方法为:x=x%(int)pow(10,bit-1)/10.
再令bit=bit-2.
注意:pow计算结果为浮点类型,必须转换成int才能得到正确结果,不然相除为小数。
代码:
class Solution {public: bool isPalindrome(int x) { if(x<0)//若为负数,返回false return false; //计算x为几位数 int bit=1; while(x/(int)pow(10,bit)!=0) bit++; while(bit>1) { if((x%10)!=(x/(int)pow(10,bit-1)))//判断第一位数与最后一位数是否相等 return false; x=x%(int)pow(10,bit-1)/10;//移除第一位数和最后一位数 bit-=2; } return true; }};
- 【LeetCode】9. Palindrome Number回文数判断
- LeetCode 9. Palindrome Number回文数判断
- [LeetCode]判断回文数(Palindrome Number)
- [leetcode] Palindrome Number 回文数判断
- (LeetCode)Palindrome Number -- 判断回文数
- 判断回文数 (Palindrome Number<from LeetCode>)
- LeetCode 9. Palindrome Number 判断是否为回文数
- 9. Palindrome Number (回文数判断)
- LeetCode 9.Palindrome Number 回文数算法
- LeetCode-9. Palindrome Number(回文数)
- leetcode-9. Palindrome Number回文数
- LeetCode | 9. Palindrome Number (回文数)
- Leetcode#9. Palindrome Number(回文数)
- LeetCode 9. Palindrome Number 回文数
- Palindrome Number判断回文数
- LeetCode Palindrome Number回文数
- Leetcode-- Palindrome Number 回文数
- leetcode Palindrome Number 回文数
- 【C++】《C++标准程序库》小结第十二章-数值
- 搜索引擎选择
- 算法学习之二分查找
- 最大堆与最小堆的实现
- Go语言学习七:结构体
- 【LeetCode】9. Palindrome Number回文数判断
- ActiveMQ的基本使用
- Codeforces Round #105 (Div. 2) (D. Bag of mice(概率DP))
- 第三周个人所得税计算器
- 集合框架--Map集合
- 第3周项目4-用穷举法解决组合问题(4)三色球问题
- [iOS]MRC和ARC
- 臣妾做不到啊---记团队内首次尝试HOLACRACY管理会议
- DRAMSim2模拟器分析与应用