Leetcode 7. Reverse Integer
来源:互联网 发布:软件测试第二版中文版 编辑:程序博客网 时间:2024/06/03 07:15
以下是我AC的代码:
class Solution{public:int reverse(int x){bool flag=false;if(x<0){x=-x;flag=true;}vector<long long> r;int i=0;while(x>0){r.push_back(x%10);x=x/10;i++;}long long x_=0;for(int j=0; j<i; j++){int k=i-j-1;while(k--)r[j]*=10;x_+=r[j];}if(x_>INT_MAX)return 0;if(flag) x_=-x_;return x_;}};
这是我调试过程中的源代码,添加了不少输出中间变量的语句:
#include<iostream>#include<cmath>#include<vector>using namespace std;class Solution{public:int reverse(int x){bool flag=false;if(x<0){x=-x;cout<<x<<endl;flag=true;}vector<long long> r;int i=0,m=0;while(x>0){r.push_back(x%10);cout<<r[m++]<<" ";x=x/10;i++;}cout<<endl;long long x_=0;for(int j=0; j<i; j++){int k=i-j-1;while(k--)r[j]*=10;cout<<r[j]<<endl;x_+=r[j];}if(x_>INT_MAX)return 0;if(flag) x_=-x_;return x_;}};int main(){int x,rx;cin>>x;Solution s;rx=s.reverse(x);cout<<rx<<endl;return 0;}
但个人感觉代码有些冗长,而且在很多地方一不小心就会超了int的范围,比如在 x=-x 那里就非常容易溢出,在 r[j]*=10 的循环那里也很容易超出int的范围(虽说定义的vector是long long型),总感觉AC了也是有些牵强,所以我看了看discuss版,膜拜一下别人写的代码:
甘拜下风。
看来要学习的地方还有很多,特别是这一句ans=ans*10+(x%10); 一下子就解决了我双重循环解决的问题,而且INT_MAX这个也是首次接触,嗯~涨姿势了!
2 0
- [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
- 7. Reverse Integer LeetCode
- 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
- Java初始化顺序
- 天嵌TQ_E9卡片电脑移植飞思卡尔yocto L4.1.15_1.0.0_ga 第四篇 新版kernel(L4.1.15-r)移植
- Android HID设备的连接
- <Activity>的生命周期
- Java 有值类型吗?
- Leetcode 7. Reverse Integer
- 常用shell脚本
- Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
- socket传送自定义对象
- java学习笔记之可变长参数
- hdu3440(差分约束)
- 数据库常见异常
- 变量
- PHP中htmlentities和 htmlspecialchars区别