leetcode: (7) Reverse Integer
来源:互联网 发布:网络课程app 编辑:程序博客网 时间:2024/06/16 00:03
Reverse digits of an integer.
Example1: x = 123, return 321 Example2: x = -123, return -321
此题最主要的考点,在于判断反转后的整数不能超出int型的最大值和最小值。
方法一:利用整形运算整除/和求余%,将int型数按个位、十位、百位...存在数组里面,按照从高往低的位次依次比较和int型最大值或最小值比较,如果超出,就返回0
int reverse(int x) { int rev[10]; int i=0,j,result=0; const int Max = pow(long double(2),31)-1; const int Min = -1*pow(long double(2),31); if(x/10==0) return x; do{ rev[i]=(x%10); x/=10; i++; }while(x/10!=0); rev[i]=(x%10); if(x>0 && i==9) { for(j=0;j<i;j++) {int tem = (Max/(int)pow(long double(10),i-j))%10; if(rev[j]>tem) return 0;else if(rev[j]==tem) continue; else break; } } else if(x<0 && i==9) { for(j=0;j<i;j++) {int tem = (Min/(int)pow(long double(10),i-j))%10; if(rev[j]<tem) return 0;else if(rev[j]==tem) continue; else break; } } for(j=0;j<i;j++) { result+=rev[j]*(int)pow(long double(10),i-j); } result+=x; return result; }
方法二:考虑到转置后int会溢出的问题,将转置后的值设为double型,可以包含溢出的int型范围,转置后与int最大,最小值做比较,超出就return 0
class Solution {public:int reverse(int x) { vector<int> rev; int i=0,j;double result=0; const int Max = pow(double(2),31)-1; const int Min = -1*pow(double(2),31); if(x/10==0) return x; do{rev.push_back(x%10); x/=10; i++; }while(x/10!=0);rev.push_back(x%10); for(j=0;j<=i;j++) { result+=rev[j]*pow(double(10),i-j); }if (x>0 && result>Max) return 0;else if (x<0 && result<Min) return 0;else return (int)result; }};
0 0
- LeetCode 7 - Reverse Integer
- LeetCode(7) Reverse Integer
- leetcode 7REVERSE INTEGER
- [leetcode 7] Reverse Integer
- [Leetcode] 7 - Reverse Integer
- LeetCode 7:《Reverse Integer》
- [leetcode 7] Reverse Integer
- LeetCode | #7 Reverse Integer
- leetcode.7-----------Reverse Integer
- LeetCode 7: Reverse Integer
- leetcode-7 Reverse Integer
- leetcode(7)Reverse Integer
- LeetCode 7 - Reverse Integer
- leetcode 7 Reverse Integer
- leetcode #7 Reverse Integer
- leetcode 7 -- Reverse Integer
- LeetCode 7: Reverse Integer
- Leetcode[7]-Reverse Integer
- 解决Android Studio的Rendering Problems之没有可视化编辑窗口
- CSU1207(Strictly-increasing sequence)
- C语言中的内存对齐
- 将ajax返回的json数据转化为json对象
- 【HDU】5421 Victor and String【回文树扩展——可左右添加字符的回文树】
- leetcode: (7) Reverse Integer
- echo print() print_r() var_dump()的区别
- leetCode 115.Distinct Subsequences(子序列距离) 解题思路和方法
- 基于Spring的Web缓存
- Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)
- SSL与TLS的区别以及介绍
- 细说 iOS 消息推送
- Leet -- Remove Duplicates from Sorted Array
- 图解SSL/TLS协议