LeetCode_7:整数反转(Python + Java)

本文探讨了在32位有符号整数环境下,如何有效地实现整数的位翻转,提供了两种主要方法:利用字符串操作和数学方法,并附带Python及Java代码示例,确保结果不会因整数溢出而超出范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 题目描述:

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

  • 示例:

(1).

输入:123
输出:321

(2).

输入:-123
输出:-321

(3).

输入:120
输出:21

注意:

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

 

  • 解法一:利用字符串反转来实现
#Python
#两种实现方法相同,方式不同
def reverse1(x):
    if -2**31 <= x <= 2**31:
        s = str(x)
        if s[0] != "-":
            l = ""
            for i in range(len(s)-1, -1, -1):
                l = l + s[i]
        else:
            l = "-"
            for i in range(len(s)-1, 0, -1):
                l = l + s[i]
    if -2**31 <= (int(l)) <= 2**31-1:
        return int(l)
    else:
        return 0

def reverse2(x):
    if -2**31 <= x <= 2**31:
        s = str(x).replace("-", "")
        number = int(s[::-1])
        if number < 2**31:
            if x > 0:
                return number
            else:
                return -number
        else:
            return 0
    else:
        return 0
        
//Java

 

  • 解法二:数学方法,采用一个while循环,不断提取x的取余数(%)和地板除数(//),终止条件为x不等于0.
#Python
def reverse(x):
    if -2**31 <= x <= 2**31-1:
        v = abs(x)
        num = 0
        if v > 9:   #当x值为个位数时,不判断则直接返回0
            while v != 0:
                a = v % 10
                num = num *10 + a
                v = v // 10
                if v < 10:
                    num = num * 10 + v
                    break
        else:
            return x            
        if num <= 2**31:
            if x >= 0:
                return num                
            else:
                return -num
        else:
            return 0        
    else:
        return 0

 

#上面代码不够简练,清晰度不高
class Solution(object):
    def reverse(self, x):
        rev=0
        max=1<<31 if x<0 else (1<<31)-1
        absx=abs(x)
        while absx!=0:
            pop=absx%10
            absx=absx//10
            if rev>(max//10) or (rev==max//10 and pop>max%10):
                return 0
            rev=rev*10+pop
        return (rev if x>0 else -rev)
'''
代码原链接:https://leetcode-cn.com/problems/reverse-integer/solution/zheng-shu-fan-zhuan-an-guan-fang-si-lu-shi-xian-de/
'''
//Java
class Solution {
    public int reverse(int x) {
        int res = 0;
        while(x != 0){
            int t = x%10;
            int newRes = res*10 + t;
            //判断是否溢出,当整型溢出转换为浮点型时数值会发生变化
            if((newRes - t)/10 != res){
                return 0;
            }
            res = newRes;
            x = x/10;
        }
        return res;
    }

}
//参考力扣原解

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标题基于SpringBoot+Vue的社区便民服务平台研究AI更换标题第1章引言介绍社区便民服务平台的研究背景、意义,以及基于SpringBoot+Vue技术的研究现状和创新点。1.1研究背景与意义分析社区便民服务的重要性,以及SpringBoot+Vue技术在平台建设中的优势。1.2国内外研究现状概述国内外在社区便民服务平台方面的发展现状。1.3研究方法与创新点阐述本文采用的研究方法和在SpringBoot+Vue技术应用上的创新之处。第2章相关理论介绍SpringBoot和Vue的相关理论基础,以及它们在社区便民服务平台中的应用。2.1SpringBoot技术概述解释SpringBoot的基本概念、特点及其在便民服务平台中的应用价值。2.2Vue技术概述阐述Vue的核心思想、技术特性及其在前端界面开发中的优势。2.3SpringBoot与Vue的整合应用探讨SpringBoot与Vue如何有效整合,以提升社区便民服务平台的性能。第3章平台需求分析与设计分析社区便民服务平台的需求,并基于SpringBoot+Vue技术进行平台设计。3.1需求分析明确平台需满足的功能需求和性能需求。3.2架构设计设计平台的整体架构,包括前后端分离、模块化设计等思想。3.3数据库设计根据平台需求设计合理的数据库结构,包括数据表、字段等。第4章平台实现与关键技术详细阐述基于SpringBoot+Vue的社区便民服务平台的实现过程及关键技术。4.1后端服务实现使用SpringBoot实现后端服务,包括用户管理、服务管理等核心功能。4.2前端界面实现采用Vue技术实现前端界面,提供友好的用户交互体验。4.3前后端交互技术探讨前后端数据交互的方式,如RESTful API、WebSocket等。第5章平台测试与优化对实现的社区便民服务平台进行全面测试,并针对问题进行优化。5.1测试环境与工具介绍测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值