【leetcode算法-简单】7.整数反转

【题目描述】

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:

输入: 123
输出: 321

示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21
注意:

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer

解答

  • 解法:字符串切片和字符转反转

  将传入的整数转为字符串类型,将字符串反转,再将反转后的字符串转为int型

  需要注意的是:

  1. 如果x是负数,如-123,那么经过反转后的字符串为“321-”,此时再将字符串转为int型会变成321-,报错。

  为了避免上述错误,增加一个特判条件,如果x<0,则将反转后的字符串最后一位"-"号去掉后,再转化为int型,由于是负数,还需要乘-1

2.  题目要求的不是x的范围,而是反转后的整数范围是 [−231,  231 − 1]

def reverse(x):
    #如果x∈[-9,9],直接返回x
    if x <10 and x >-1*10: return x

    #特判
    if x < 0 :
        a = str(x) #将int整数转化为字符串
        b = a[::-1] #将字符串反转
        c = b[:-1] #去掉字符串末尾的负号
        if int(c) > 2**31:
            return 0
        else:
            return int(c)*-1

    a = str(x) #整数转为string
    b = a[::-1] #将字符串反转
    if int(b) < 2**31-1:
        return int(b)
    else:
        return 0

  执行用时:40ms

原文地址:https://www.cnblogs.com/xxx1206/p/11929143.html

时间: 2024-10-09 00:37:38

【leetcode算法-简单】7.整数反转的相关文章

LeetCode 第7题 整数反转

LeetCode 第7题 整数反转 题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 整体思路 这道题在LeetCode的题目中是非常简单的,尤其是用Python来解决.我们都知道在Python中int类型和str类型是可以相互转换的:int(str) 或者 str(int).因此这道题中,我们仅需要将input中的int类型转换为str类型然后翻转字符串即可. 翻转字符串我们用到的方法是str[::-1].在这个语句中,'-1'指的是step(步长)的意思,取

LeetCode 第七题--整数反转

1. 题目 2.思路 1. 题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123输出: 321 示例 2: 输入: -123输出: -321示例 3: 输入: 120输出: 21 2. 思路   python的坑就在于取余,python的-123 %10 为7 -123 %-10 才为-3,还有就是/10 应该转化为int型,其余的就按照一位一位的弹出,然后判断是否溢出就可以了. class Solution: def reverse(sel

【leetcode算法-简单】26. 删除排序数组中的重复项

[题目描述] 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2. 你不需要考虑数组中超出新长度后面的元素. 示例 2: 给定 nums = [0,0,1,1,1,2,2,3,3,4], 函数应该返回新的长度 5, 并且原数

【leetcode算法-简单】38. 报数

[题目描述] 报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1. 12. 113. 214. 12115. 1112211 被读作  "one 1"  ("一个一") , 即 11.11 被读作 "two 1s" ("两个一"), 即 21.21 被读作 "one 2",  "one 1" ("一个二" ,  "一个一&

【leetcode算法-简单】53. 最大子序和

[题目描述] 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6.进阶: 如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解. [解答] 解法:动态规划法   如果Sum<0,那么 Sum + nums[i] < nums[i] ,在这种情况下,Sum 对 nums[i] 没有任何的增益效果

【leetcode算法-简单】14. 最长公共前缀

[题目描述] 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow","flight"]输出: "fl" 示例 2: 输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀.说明: 所有输入只包含小写字母

【Leetcode】【简单】【17. 整数反转】【JavaScript】

题目描述 7. 整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123输出: 321 示例 2: 输入: -123输出: -321示例 3: 输入: 120输出: 21注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1].请根据这个假设,如果反转后整数溢出那么就返回 0. 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse

Leetcode 7. 整数反转(ing)

1.题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321  示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1].请根据这个假设,如果反转后整数溢出那么就返回 0. 2.<limits>头文件 //宏定义 #define INT_MAX 2147483647 #define IN

C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数

各位相加 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数. 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2. 由于 2 是一位数,所以返回 2. 进阶:你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗? 题目地址 https://leetcode-cn.com/problems/add-digits/ 代码模板 public class Solution { public int AddDigits