给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
示例 1:

输入:x = 123
输出:321
示例 2:

输入:x = -123
输出:-321
示例 3:

输入:x = 120
输出:21
示例 4:

输入:x = 0
输出:0

1.简单解法
1.判断x的大小,对于负值将其转化为正值,待其反转后再将再填负号
2.将整数转化为字符串
3.通过[::-1]进行反转
4.范围认定,注意:要求的是reverse之后再进行判断而不是之前的x值是否在范围中。

class Solution(object):def reverse(self, x):""":type x: int:rtype: int"""if x==0:return xif x<0:x=-xstr_x=str(x)str_x=str_x[::-1]x=int(str_x)x=-x if x<=-2**31:return 0else:return xif x>0:str_x=str(x)str_x=str_x[::-1]x=int(str_x)if x>=2**31-1:return 0else:return x

2.优化解法
1.将x的绝对值存入y
2.反复“弹出”y的最后一位,将其”推入“res的后面
3.在这样做的时候,我们可以预先检查向原整数附加另一位数字是否会导致溢出。

class Solution(object):def reverse(self, x):""":type x: int:rtype: int"""y,res=abs(x),0boundary=1<<31 if x<0 else (1<<31)-1while y!=0:res=res*10+y%10if res>boundary:return 0y//=10return res if x>0 else -res

python中的左移和右移:
左移、右移是指:在二进制中,将1向左、向右移动的位数,返回的是将二进制数转换为十进制数的结果。

公式: a<<b 等价于 a*(1<<b),而(1<<b)的结果是二进制数: 100…00 (共b个0,表示将1向左移动b位),对应的十进制结果是:2^{b}

示例: 3<<5 = 3*2^{5} = 96

使用左移右移操作,可以提升计算速度。

leedcode刷题——整数反转相关推荐

  1. LeetCode刷题: 整数反转

    题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转.示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意: ...

  2. LeetCode刷题——整数反转

    目录 一.题目描述 二.题解 三.源码 一.题目描述 二.题解 三.源码 class Solution:def reverse(self, x: int) -> int:if -10 < ...

  3. 【leedcode刷题1】两数之和

    [leedcode刷题 1]两数之和 大家好,小生不才,从今天开始将自己刷题的过程记录在博客中,因为能力有限,所以如果有什么错的地方希望大家积极指正,不胜感激. 题目 给定一个整数数组 nums 和一 ...

  4. LeedCode刷题笔记-Z字形变化

    LeedCode刷题笔记-Z字形变化 题目描述 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "PAYPALISHIRI ...

  5. LeetCode题组:第7题-整数反转

    题目:整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: ...

  6. 20191211——第七题 整数反转

    这套题卡了很久,实在不会看到题解才明白错的原因,原因就在于这个会不会溢出,可能一开始的数组并没有溢出计算机的范围pow(2,31) ,但是当你反转之后你就有可能进行溢出,所以你需要进行判断. 方法其实 ...

  7. Leedcode刷题技巧及方法总结(学习笔记,建议收藏,持续更新)

    1. int mid=left + (right - left)/2  leedcode 278 有效防止mid溢出 2.想要更改链表链接顺序,可以考虑使用guard拆解链接 leecode 138 ...

  8. leetcode第七题整数反转

    leetcode第七题: 提示:这里简述项目相关背景: 挑一题简单一点的试试手 问题描述: 原因分析: 提示:这里填写问题的分析: 通过了1031个案例应该是边界问题 解决方案: 提示:先改改待会来补 ...

  9. 刷题-整数和罗马数字转换

    实现罗马数字与整数的互转. 数字大小为[1, 3999]之间. 罗马数字只有7个字母组成,每个字母代码的字如下 字母 M D C L X V I 代表数字 1000 500 100 50 10 5 1 ...

最新文章

  1. 洛谷 3029 [USACO11NOV]牛的阵容Cow Lineup
  2. Java Longest Palindromic Substring(最长回文字符串)
  3. [CodeJam 2019 Round 3] Rancake Pyramid(笛卡尔树)
  4. 使用docker 起容器配置负载均衡(加权)
  5. unique函数_C++核心准则C.35:基类的析构函数必须满足的条件
  6. 大数据学习笔记56:HBase Shell操作
  7. redis怎么不让存byte_Redis 删除数据后不能自动释放内存么?
  8. 阶段3 1.Mybatis_12.Mybatis注解开发_3 mybatis注解开发保存和更新功能
  9. vector容器——构造函数
  10. Python中利用scipy库进行最小二乘回归分析(金融相关)
  11. java 二进制转换为十进制_二进制转换十进制 算法解析
  12. linux中安装apr
  13. [内附完整源码和文档] 基于VS2013实现的弹弹堂小游戏
  14. android vr游戏开发,安卓VR成人游戏合集
  15. table表格表头单元格添加斜线
  16. 语音转文字软件哪个好?快来看看这几个软件
  17. c语言 不用锁存器 数码管倒计时,倒计时器课程设计.doc
  18. 2017.1直播类APP排行:斗鱼第一、YY第二、映客第三
  19. html取消ul下划线,css – 删除下划线:hover:before
  20. Docker:基于ubuntu18.04的介绍,安装与使用 - 最新无死角

热门文章

  1. 大同语网站页面资料汇总编书(PDF)
  2. iOS多线程各种安全锁介绍 - 线程同步
  3. 写一个Windows上的守护进程(4)日志其余
  4. lucene域的各种类型
  5. mp4剪辑器_想学视频剪辑,可是专业的视频软件太难,来试试这软件吧!
  6. ggplot2 | 注释函数
  7. mysql php状态函数_mysql常用的信息函数
  8. linux修改java占用端口号_Linux端口被占用、查看
  9. 如果你正处于迷茫期,那就来做这份工作吧!
  10. 改善CSS的10种最佳做法,帮助你从样式中获得最大的收益