题目


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]整数反转的更多相关文章

  1. 【LeetCode】7、Reverse Integer(整数反转)

    题目等级:Easy 题目描述: Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 O ...

  2. [LintCode] Reverse Integer 翻转整数

    Reverse digits of an integer. Returns 0 when the reversed integer overflows (signed 32-bit integer). ...

  3. 【LeetCode】7. Reverse Integer 整型数反转

    题目: Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 思路:不 ...

  4. lintcode :reverse integer 颠倒整数

    题目: 颠倒整数 将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数). 样例 给定 x = 123,返回 321 给定 x = -123,返回 -321 解题: 直接 ...

  5. [LeetCode] Reverse Integer 翻转整数

    Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 click to ...

  6. LeetCode 7. Reverse Integer 一个整数倒叙输出

    潜在问题:(1)随着求和可能精度会溢出int 范围,需要使用long 来辅助判断是否溢出,此时返回 0 Assume we are dealing with an environment which ...

  7. 007 Reverse Integer 旋转整数

    Given a 32-bit signed integer, reverse digits of an integer.Example 1:Input: 123Output:  321Example ...

  8. [LeetCode] 7. Reverse Integer 翻转整数

    Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: 321 Examp ...

  9. LeetCode 【2】 Reverse Integer --007

    六月箴言 万物之中,希望最美:最美之物,永不凋零.—— 斯蒂芬·金 第二周算法记录 007 -- Reverse Integer (整数反转) 题干英文版: Given a 32-bit signed ...

随机推荐

  1. Eric6中编译窗体时,弹出提示:无法启动pyuic5的解决方案

    用 Eric6 与 PyQt5 结合,非常方便的实现界面与逻辑分离,满足python的极速GUI编程,不需要在界面上花很多时间. 这是一对GUI开发完美的组合! Eric6中设计窗体时,弹出提示:‘无 ...

  2. Android CollapsingToolbarLayout Toolbar的title覆盖问题

    CollapsingToolbarLayout 里: app:titleEnabled="true" app:title="Hello" Toolbar 里: ...

  3. 【Oracle】ORA-38171: Insufficient privileges for SQL management object operation

    问题: 使用SQL PLAN MANAGEMENT的时候运行下面的存储过程报错. SYS@GOOD> conn scott/tiger Connected. SCOTT@GOOD> DEC ...

  4. PhotoZoom Pro 7怎么进行参数设置

    每个用户在使用PhotoZoom时,在针对不同的图片,我们处理的方式也不同.所以在参数设置会因图片不同而不同.那么在PhotoZoom中参数究竟如何设置呢? 首先,我们先打开[参数设置],点击后会弹出 ...

  5. forEach 列出数组的每个元素:

    数组.forEach便利所有的元素 array.forEach(function(currentValue, index, arr), thisValue) function(currentValue ...

  6. java中的标识符

    程序员自己定义的名称,例如类名,方法名,变量等等 标识符命名的规则 1.只能由字母(a-z,A-Z),数字(0-9),下划线(_)和美元符号($)组成 2.不能以数字开头 3.不能与关键字重名 4.严 ...

  7. Python代码块缓存、小数据池

    引子 前几天遇到了这样一道Python题目:a='123',b='123',下列哪个是正确的? A. a != b B. a is b C. a==123 D. a + b =246 正确答案是B 是 ...

  8. JS 1000以内的水仙花数 (三位数 各个数字的立方和等于本身 例如 1*1*1 + 5*5*5 + 7*7*7 = 157)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. 路飞学城Python-Day181

    Evernote Export Nginx默认网站 当Nginx配置文件中有且仅有一个Server的时候,该Server就被Nginx认为是默认网站,所有发给Nginx服务器80端口的数据都会默认给s ...

  10. pyhton的selenium的搭建

    一.好记性不如烂笔头,小伙伴们.让我们做下笔记吧 1.首先要安装pycharm  激活注册码地址:http://idea.lanyus.com/ 2.下载python3.6   python下载地址: ...