LeetCode-7-Reverse Integer(Nmber-Strng)-Easy
2015-12-18 09:24
531 查看
题意分析:
将输入整数进行反转,如果反转后的数已超过整数范围(-2147483648~2147483647),则返回0;
解题分析:
1. 注意int32的范围越界(返回0);
2. 打印输出时避免最高位为0的情况,如00233;
4. 使用string类型标示输入和变换,规避取值范围的越界;
3.使用stringstream实现整数和string之间的转换;
5.不能使用__int64类型;
解题代码:
使用__int64的解题代码:
将输入整数进行反转,如果反转后的数已超过整数范围(-2147483648~2147483647),则返回0;
解题分析:
1. 注意int32的范围越界(返回0);
2. 打印输出时避免最高位为0的情况,如00233;
4. 使用string类型标示输入和变换,规避取值范围的越界;
3.使用stringstream实现整数和string之间的转换;
5.不能使用__int64类型;
解题代码:
#include<sstream> #include<string> #include<math.h> using namespace std; #define MAX_INT32 2147483648 #define SUB_MAX_INT32 147483648 class Solution { private: bool isINT32(string s){ int maxNumLen; if(s[0]=='-'){ maxNumLen=11; }else{ maxNumLen=10; } if(s.length()>maxNumLen){ return false; }else if(s.length()==maxNumLen){ string intS; if(s[0]=='-'){ if(s[1]>'0'+2){ return false; }else{ intS=s[0]+s.substr(2); } }else{ if(s[0]>'0'+2){ return false; }else{ intS=s.substr(1); } } stringstream ss; ss<<intS; int subNum; ss>>subNum; if(subNum>SUB_MAX_INT32-1 || subNum<SUB_MAX_INT32*-1){ return false; } } return true; } public: int reverse(int x) { stringstream ss1; ss1<<x; string s; ss1>>s; cout<<"s= "<<s<<endl; string reverseS=""; int endIndex; if(s[0]=='-'){ reverseS+='-'; endIndex=1; }else{ endIndex=0; } for(int i=s.length()-1;i>=endIndex;i--){ reverseS+=s[i]; } cout<<"reverseS="<<reverseS<<endl; if(isINT32(reverseS)){ stringstream ss2; ss2<<reverseS; int ans; ss2>>ans; return ans; }else{ return 0; } } };
使用__int64的解题代码:
#include<sstream> #include<string> #include<math.h> using namespace std; #define MAX_INT32 2147483648 class Solution { public: int reverse(int x) { stringstream ss1; ss1<<x; string s; ss1>>s; //cout<<"s= "<<s<<endl; string reverseS=""; int endIndex; if(s[0]=='-'){ reverseS+='-'; endIndex=1; }else{ endIndex=0; } for(int i=s.length()-1;i>=endIndex;i--){ reverseS+=s[i]; } __int64 i64; //cout<<"reverseS= "<<reverseS<<endl; stringstream ss2; ss2<<reverseS; ss2>>i64; cout<<"i64= "<<i64<<endl; if(abs(i64)<=MAX_INT32){ return (int)i64; } return 0; } };
相关文章推荐
- iframe 无刷新上传图片以及返回值
- Unity3d在安卓android的更新(APK覆盖)
- 死锁,简单看一看
- 泛型
- 使用命令行启动VirtualBox虚拟机
- 第十六周项目9 基数排序
- UNIX时间结构
- java虚拟机-运行时数据区域
- python学习记录(1)基础内容
- 有意思的程序员老黄历
- 关于linux内核学习的误区以及相关书籍介绍
- sqoop工具在hive和mysql之间互相导数据
- activity的生命周期
- flex序列号和破解
- 协议和扩展
- 第十二周项目四----利用遍历思想求解图问题之7最远顶点
- 第八周 项目三 顺序串算法(3)
- 第十四周 项目三-二叉排序树
- 第十四周(项目二)--判断二叉排序树
- 【PostgreSQL】PostgreSQL基础操作