首页 > 其他分享 >7. 整数反转

7. 整数反转

时间:2023-10-23 10:14:30浏览次数:32  
标签:10 return temp int 反转 整数 str res

目录

题目

  • 给你一个 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

法一、直接解

 def reverse_force(self, x: int) -> int:
        if -10 < x < 10:                         #个位数直接返回
            return x
        str_x = str(x)                           #转成字符串处理
        if str_x[0] != "-":                      #如果是正数
            str_x = str_x[::-1]                  #直接取反
            x = int(str_x)
        else:#负数
            str_x = str_x[:0:-1]                 #除开符号位置取反
            x = int(str_x)
            x = -x                               #加上负号
        return x if -2147483648 < x < 2147483647 else 0#如果满足范围返回,否则返回0

法二、数学解法

  • 核心三行:
 temp = x % 10 #拿到最后一位,若为123,temp=3,2,1
 res = res * 10 + temp# res=3,30+2=32,32*10+1=321
 x = x // 10   #x=12,1
class Solution:
    def reverse(self, x: int) -> int:
        res = 0
        sign = 1 if x >= 0 else -1
        x = abs(x)
        while x != 0:
            temp = x % 10
            if res > 214748364 or (res == 214748364 and temp > 7):#整数范围是 [-2147483648, 2147483647],所以最后一位的取值范围是 0 到 9。如果当前位数的值大于 7,那么在将其加入到结果 res 中时,结果 res 乘以 10 后的值将会超过上限 2147483647,因此会导致溢出
                return 0
            if res < -214748364 or (res == -214748364 and temp < -8):
                return 0
            res = res * 10 + temp
            x = x // 10  
        return res * sign

标签:10,return,temp,int,反转,整数,str,res
From: https://www.cnblogs.com/lushuang55/p/17781132.html

相关文章

  • 7. 整数反转
    1.题目介绍2.题解2.1转换为字符串反转问题1.使用to_string()转化为字符串+reverse()反转+stoi()转化为整数+trycatch处理溢出////Createdbytrmbhon2023-10-21.//#include<iostream>#include<string>#include<algorithm>#include<sstream>classSolution{pu......
  • python基础-数据类型(字符串-布尔-整数)
    目录1.整数(int)1.1定义1.2独有功能1.3公共功能1.4转换1.5其他1.5.1长整型1.5.2地板除1.5.3其它2.布尔(bool)2.1定义2.2独有功能2.3公共功能2.4转换2.5其他做条件自动转换3.字符串(str)3.1定义3.2独有功能3.2.1练习题3.3公共功能3.4转换3.5其他4.练习题......
  • 获取二叉搜索树中节点值的和等于指定输入整数的所有路径
    二叉搜索树(BST)是一种特殊的二叉树,其每个节点的值都大于其左子树的所有节点的值,并且小于其右子树的所有节点的值。由于这种特性,我们可以在BST中快速查找、插入、删除节点。在BST中,我们可以通过遍历所有路径来找到节点值的和等于指定整数的所有路径。以下是一个使用Python实现的例子:p......
  • 2023-10-04:用go语言,现有一棵无向、无根的树,树中有 n 个节点,按从 0 到 n - 1 编号 给你
    2023-10-04:用go语言,现有一棵无向、无根的树,树中有n个节点,按从0到n-1编号给你一个整数n和一个长度为n-1的二维整数数组edges,其中edges[i]=[ai,bi]表示树中节点ai和bi之间存在一条边。每个节点都关联一个价格。给你一个整数数组price,其中price[i]是第i......
  • 2023-09-30:用go语言,给你一个整数数组 nums 和一个整数 k 。 nums 仅包含 0 和 1, 每一
    2023-09-30:用go语言,给你一个整数数组nums和一个整数k。nums仅包含0和1,每一次移动,你可以选择相邻两个数字并将它们交换。请你返回使nums中包含k个连续1的最少交换次数。输入:nums=[1,0,0,1,0,1],k=2。输出:1。答案2023-09-30:步骤描述:1.定义一个函数minMoves......
  • 整数取反和按位取反
    1.概念在计算机中,-res和~res是两种完全不同的操作,它们有不同的含义和效果按位取反“~”:按位取反1变0,0变11.1‘-res’-res表示对res进行整数取反操作。如果res是一个有符号整数的二进制表示,如1010,那么-res将变为-1010。1.2‘~res’~res表示对res进行按位取反操作~re......
  • 力扣12.整数转罗马数字
    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如,罗马数字2写做 II ,即为两个并列的1。12写做 XII ,即为 X + I......
  • 【C语言】输入一个正整数,判断其是否为素数
    1、素数又叫质数。素数,指的是“大于1的整数中,只能被1和这个数本身整除的数”。2、素数也可以被等价表述成:“在正整数范围内,大于1并且只有1和自身两个约数的数”。#include<stdio.h>intmain(){ inti,m; printf("输入一个正整数:"); scanf("%d",&m); for(i=2;i<=m/......
  • 代码训练营第八天(Python)| 344.反转字符串、541. 反转字符串II、05.替换空格、151.翻转
    344.反转字符串双指针法时间复杂度为:O(n),空间复杂度为:O(1)classSolution:defreverseString(self,s:List[str])->None:"""Donotreturnanything,modifysin-placeinstead."""left,right=0,len(s......
  • Leetcode206. 反转链表
    题目描述给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例提交的代码classSolution{publicListNoderesultHead;publicListNodereverseList(ListNodehead){if(head==null)returnnull;ListNodefirst=recursionOfList(he......