leedcode刷题——整数反转
给你一个 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刷题——整数反转相关推荐
- LeetCode刷题: 整数反转
题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转.示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意: ...
- LeetCode刷题——整数反转
目录 一.题目描述 二.题解 三.源码 一.题目描述 二.题解 三.源码 class Solution:def reverse(self, x: int) -> int:if -10 < ...
- 【leedcode刷题1】两数之和
[leedcode刷题 1]两数之和 大家好,小生不才,从今天开始将自己刷题的过程记录在博客中,因为能力有限,所以如果有什么错的地方希望大家积极指正,不胜感激. 题目 给定一个整数数组 nums 和一 ...
- LeedCode刷题笔记-Z字形变化
LeedCode刷题笔记-Z字形变化 题目描述 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "PAYPALISHIRI ...
- LeetCode题组:第7题-整数反转
题目:整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: ...
- 20191211——第七题 整数反转
这套题卡了很久,实在不会看到题解才明白错的原因,原因就在于这个会不会溢出,可能一开始的数组并没有溢出计算机的范围pow(2,31) ,但是当你反转之后你就有可能进行溢出,所以你需要进行判断. 方法其实 ...
- Leedcode刷题技巧及方法总结(学习笔记,建议收藏,持续更新)
1. int mid=left + (right - left)/2 leedcode 278 有效防止mid溢出 2.想要更改链表链接顺序,可以考虑使用guard拆解链接 leecode 138 ...
- leetcode第七题整数反转
leetcode第七题: 提示:这里简述项目相关背景: 挑一题简单一点的试试手 问题描述: 原因分析: 提示:这里填写问题的分析: 通过了1031个案例应该是边界问题 解决方案: 提示:先改改待会来补 ...
- 刷题-整数和罗马数字转换
实现罗马数字与整数的互转. 数字大小为[1, 3999]之间. 罗马数字只有7个字母组成,每个字母代码的字如下 字母 M D C L X V I 代表数字 1000 500 100 50 10 5 1 ...
最新文章
- 洛谷 3029 [USACO11NOV]牛的阵容Cow Lineup
- Java Longest Palindromic Substring(最长回文字符串)
- [CodeJam 2019 Round 3] Rancake Pyramid(笛卡尔树)
- 使用docker 起容器配置负载均衡(加权)
- unique函数_C++核心准则C.35:基类的析构函数必须满足的条件
- 大数据学习笔记56:HBase Shell操作
- redis怎么不让存byte_Redis 删除数据后不能自动释放内存么?
- 阶段3 1.Mybatis_12.Mybatis注解开发_3 mybatis注解开发保存和更新功能
- vector容器——构造函数
- Python中利用scipy库进行最小二乘回归分析(金融相关)
- java 二进制转换为十进制_二进制转换十进制 算法解析
- linux中安装apr
- [内附完整源码和文档] 基于VS2013实现的弹弹堂小游戏
- android vr游戏开发,安卓VR成人游戏合集
- table表格表头单元格添加斜线
- 语音转文字软件哪个好?快来看看这几个软件
- c语言 不用锁存器 数码管倒计时,倒计时器课程设计.doc
- 2017.1直播类APP排行:斗鱼第一、YY第二、映客第三
- html取消ul下划线,css – 删除下划线:hover:before
- Docker:基于ubuntu18.04的介绍,安装与使用 - 最新无死角