栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

LeetCode50天刷题计划(Day 6—— 整数反转 14.20-15.20)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode50天刷题计划(Day 6—— 整数反转 14.20-15.20)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 前言
  • 一、题目
    • 整数反转
    • 示例
    • 提示
  • 二、思路
    • 1.python
    • 2.c++
  • 三、代码
    • 1.python
    • 2.c++


前言

今天的题好简单

一、题目 整数反转

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

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

假设环境不允许存储 64 位整数(有符号或无符号)。

示例

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

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

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

示例 4:
输入:x = 0
输出:0

提示

-231 <= x <= 231 - 1

二、思路 1.python

没啥难度,输入后和输出前判断两次范围,中间无脑反转字符串就行了
需要注意python切片步长为-1时下标是从后往前算的,其中s【start,end,-1】中,切出[start,end)的序列(已反转),故end是小下标,start是大下标。

2.c++

传统做法应该是数学方法,while循环取模求余依次得到从后往前的每一位(cur=x%10;x=x/10),
对于每一位把他加入结果result中(result=result*10+cur)

需要注意:
① INT_MAX = 2^31-1,INT_MIN= -2^31

②在形成结果的过程中不断判断范围,一旦出现上溢出或下溢出,立即返回0
本题假设环境不允许存储 64 位整数,因此输入不会有溢出,只能是在反转的过程中,在形成result中出现溢出。也就是result*10+num>INT_MAX or result*10+num 上溢出条件:

下溢出条件:

③复杂度分析

log(x)相当于取x的位数,因为要遍历x的每一位
空间上只需要原地乘,O(1)

三、代码 1.python
class Solution:
    def reverse(self, x: int) -> int:
        #计算上下边界
        edge=pow(2,31)
        down=-edge
        up=edge-1
        #如果在边界外,返回0
        if(xup):
            return 0
        #如果是负数,先将去掉符号的部分转为字符串然后反转然后转为int然后加上符号
        if(x<0):
            re=-(int(str(x)[:0:-1]))
        #正数不用在意负号,直接反转即可
        else:
            re=int(str(x)[::-1])
        #要保证输出的结果也在范围内
        if(reup):
            return 0
        else:
            return re

2.c++
class Solution {
public:
    int reverse(int x) {
        //结果
        int result=0;
        //当前数字
        int cur = 0;
        //遍历每一位
        while(x != 0){
            cur = x%10;
            x/=10;
            if(result>INT_MAX/10 || result == INT_MAX/10 && cur>INT_MAX%10){
                return 0;
            }
            if(result
                return 0;
            }
            result = result*10 + cur;    
        }
        return result;

    }
};

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1030437.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号