Leetcode 07 Reverse Integer(数字反转) && 09 Palindrome number(回文判断)
2018-03-08 11:02
597 查看
07 数字反转
该题难度不大,主要对输入数字进行取余数并将取出的余数保存一个新的数字之中,然后对原数进行除10操作直到输入数字为0时,唯一需要注意的是,定义新数字是将其类型定义为long,否则当数字本省大于INT_MAX或者INT_MIN的时候会出现越界的情况,然后变成一个随机区域内数字,就无法达到返回0的目的。程序如下:
class Solution { public: int reverse(int x) { long result=0; while(x!=0){ result=result*10+x%10; x /= 10; } return (result > INT_MAX || result < INT_MIN)? 0 : result; } };
09 回文判断题目相对于之前的题目来说相当的简洁和08题很像,而我解题之所以跳过08题的原因有如下两点:一、08题的情况有点多需要再琢磨琢磨,相对08虽然是一个中等难度的题目,但情况过多也造成了它的难度提升。二、09题和07题有异曲同工之妙,两者解法相似。为什么说两个解法相似,就需要理解何为回文,所谓回文就是反转数字以后其结果和输入相同,所以其解题大体和07题相同,在对其加上一个判断语句即可,但有些小的细节需要注意,看下列程序:
class Solution { public: bool isPalindrome(int x) { if(x>=INT_MAX||x<=INT_MIN) //判断是否超过范围 return false; int answer=0,tmp=x; while(x!=0){ answer=answer*10+x%10; //与07题相同的计算语句 x/=10; } if(answer==tmp) return true; else return false; } };看似没有问题的程序但在某些情况下无法通过测试,主要是因为当输入小于0的时候,该数不可能是一个回文。所以在对x范围进行判断的时候加上x>0条件即可。
if(x>=INT_MAX||x<=INT_MIN) return false; //改为 if(x<0||x>=INT_MAX||x<=INT_MIN) return false;这样就能通过所有测试成功AC。
相关文章推荐
- leetcode:Reverse Integer(反转数字)【算法面试题】
- leetcode——Reverse Integer 反转整数数字(AC)
- Leetcode 7 Reverse Integer 反转数字
- LeetCode 7 Reverse Integer(反转数字)
- LeetCode_7_ReverseInteger(翻转数字)
- leetcode reverse integer&&Palindrome Number
- LeetCode--Reverse Integer(整数反转)Python
- LeetCode7——Reverse Integer(将一个整数反转,注意溢出的处理)
- Reverse Integer && Palindrome Number-LeetCode
- 【LeetCode】- Reverse Integer(将一个整数反转)
- LeetCode 7 :Reverse Integer ---- 反转int整数
- leetcode_7. Reverse Integer 反转整数的各个数字
- LeetCode 7&9 Reverse Integer & Palindrome Number
- LeetCode之“数学”:Reverse Integer && Reverse Bits
- 7 Reverse Integer(数字反转Easy)
- [leetcode 7] Reverse Integer(整数反转) c函数实现
- (LeetCode)Reverse Integer --- 反转整数
- leetcode 7&9 : Reverse Integer & Palindrome Number
- Palindrome Number 判断一个数字是否是回文数字@LeetCode
- LeetCode Palindrome Number && Reverse Integer 解法集合