7. Reverse Integer[E]整数反转
题目
Given a 32-bit signed integer, reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123,return -321
Example3: x = 120, return 21
思路
问题的关键在于对溢出的判断。
思路1:用long或者long long
直接用long或者long long计算,这样就保证不会溢出,再判断反转后的数字是否溢出。
思路2:stoi()
通过字符串转换,由于stoi()函数会作int范围检查,利用异常处理机制。
思路3:字符串分片(python)
python中int都是长整型,可以通过直接比较32位整数大小来判断是否溢出。通过字符串分片来完成反转。
Tips
C++知识
- integer范围:\(-2^{31} \sim 2^{31}-1\)
- short为半个机器字长,int为一个机器字长,long类型为一个或者两个机器字长
- stoi()字符处理函数,将数字字符串转换成int输出,并且对作范围检查,默认范围是在int范围内,如果超出范围会runtime error。
整数翻转
通过取余操作读取当前输入x的个位数,放到反转后的整数s的末位,通过s*10加上x的末位得到新的s,相当于将x左移一位。再通过x=x/10的操作,使得x右移一位,x的个位数到了小数位被强制类型转换掉了,再取余得到新的个位数。
判断溢出
- 与INT_MAX、INT_MIN作比较
- 对数作一些运算,如果溢出了,那么运算后的值作反向操作会和之前的值不一样。
Python知识
字符串的分片
- 有三个被索引运算符(:)分开的数字,第一个数字是起始值,默认是字符串的起始位置,即索引为0;第二个数字是结束值,默认是字符串的末尾字符;第三个数字是步长,默认为1。
- 步长为-1时,python认为是向后进行
- python采用的是半开区间,包含范围的起始值,但是不包含结束值。
C++
- 思路1
int reverse(int x){
long long res=0;
while(x!=0){
int t = res * 10 + x % 10;
if(t /10 != res)
return 0;
res = t;
t /= 10;
}
return res;
}
- 思路2
int reverse(int x){
std::string str = std::to_string(x);
if(str[0] == '-')
std::reverse(str.begin()+1,str.end());
else
std::reverse(str.begin(),str.end());
try{
return stoi(str);
}
catch(out_of_range ex){
return 0;
}
}
python
def reverse(self, x):
if x >= 0:
s = (int)(str(x)[::-1])
else:
s = -(int)(str(-x)[::-1])
if s >= -(2**31) and s <= (2**31)-1:
return s
else:
return 0
7. Reverse Integer[E]整数反转的更多相关文章
- 【LeetCode】7、Reverse Integer(整数反转)
题目等级:Easy 题目描述: Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 O ...
- [LintCode] Reverse Integer 翻转整数
Reverse digits of an integer. Returns 0 when the reversed integer overflows (signed 32-bit integer). ...
- 【LeetCode】7. Reverse Integer 整型数反转
题目: Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 思路:不 ...
- lintcode :reverse integer 颠倒整数
题目: 颠倒整数 将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数). 样例 给定 x = 123,返回 321 给定 x = -123,返回 -321 解题: 直接 ...
- [LeetCode] Reverse Integer 翻转整数
Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 click to ...
- LeetCode 7. Reverse Integer 一个整数倒叙输出
潜在问题:(1)随着求和可能精度会溢出int 范围,需要使用long 来辅助判断是否溢出,此时返回 0 Assume we are dealing with an environment which ...
- 007 Reverse Integer 旋转整数
Given a 32-bit signed integer, reverse digits of an integer.Example 1:Input: 123Output: 321Example ...
- [LeetCode] 7. Reverse Integer 翻转整数
Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: 321 Examp ...
- LeetCode 【2】 Reverse Integer --007
六月箴言 万物之中,希望最美:最美之物,永不凋零.—— 斯蒂芬·金 第二周算法记录 007 -- Reverse Integer (整数反转) 题干英文版: Given a 32-bit signed ...
随机推荐
- Eric6中编译窗体时,弹出提示:无法启动pyuic5的解决方案
用 Eric6 与 PyQt5 结合,非常方便的实现界面与逻辑分离,满足python的极速GUI编程,不需要在界面上花很多时间. 这是一对GUI开发完美的组合! Eric6中设计窗体时,弹出提示:‘无 ...
- Android CollapsingToolbarLayout Toolbar的title覆盖问题
CollapsingToolbarLayout 里: app:titleEnabled="true" app:title="Hello" Toolbar 里: ...
- 【Oracle】ORA-38171: Insufficient privileges for SQL management object operation
问题: 使用SQL PLAN MANAGEMENT的时候运行下面的存储过程报错. SYS@GOOD> conn scott/tiger Connected. SCOTT@GOOD> DEC ...
- PhotoZoom Pro 7怎么进行参数设置
每个用户在使用PhotoZoom时,在针对不同的图片,我们处理的方式也不同.所以在参数设置会因图片不同而不同.那么在PhotoZoom中参数究竟如何设置呢? 首先,我们先打开[参数设置],点击后会弹出 ...
- forEach 列出数组的每个元素:
数组.forEach便利所有的元素 array.forEach(function(currentValue, index, arr), thisValue) function(currentValue ...
- java中的标识符
程序员自己定义的名称,例如类名,方法名,变量等等 标识符命名的规则 1.只能由字母(a-z,A-Z),数字(0-9),下划线(_)和美元符号($)组成 2.不能以数字开头 3.不能与关键字重名 4.严 ...
- Python代码块缓存、小数据池
引子 前几天遇到了这样一道Python题目:a='123',b='123',下列哪个是正确的? A. a != b B. a is b C. a==123 D. a + b =246 正确答案是B 是 ...
- JS 1000以内的水仙花数 (三位数 各个数字的立方和等于本身 例如 1*1*1 + 5*5*5 + 7*7*7 = 157)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 路飞学城Python-Day181
Evernote Export Nginx默认网站 当Nginx配置文件中有且仅有一个Server的时候,该Server就被Nginx认为是默认网站,所有发给Nginx服务器80端口的数据都会默认给s ...
- pyhton的selenium的搭建
一.好记性不如烂笔头,小伙伴们.让我们做下笔记吧 1.首先要安装pycharm 激活注册码地址:http://idea.lanyus.com/ 2.下载python3.6 python下载地址: ...