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

leetcode整数反转

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

leetcode整数反转

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。

这道题想到了三个方案:
1、最常想到的(C语言方案):

int reverse(int x){
    int i ,j,k,m=1,n[20];
    k=x;
    for(i=0;k!=0;i++){
        n[i]=k%10;
        k=k/10;
    }
    for(j=i-1;j>=0;j--){
        k=n[j]*m+k;
        m*=10;
    }
    return k;
}

可惜此方案溢出,报错,欢迎高手指点……

2、改用python来解决溢出问题(python方案1):

class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
    	m=1
    	i=0
    	n=[]
    	k=x
    	while(k!=0):
        	n.append(k%10)
        	k=k/10
        	i+=1
    	for j in range(i-1,-1,-1):
        	k=n[j]*m+k;
        	m*=10;
    	return k

泪崩,时间超限!

3、最后想到用空间换时间(python方案1):

class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        if x>=0:
            k = list(str(x))
            n = '0'
            k.reverse()
            for i in k:
                n=n+i
            n = int(n) 
        else:
            x=abs(x)
            k = list(str(x))
            n = '0'
            k.reverse()
            for i in k:
                n=n+i
            n = -1*int(n)
        if 2**31-1 >= n >=-2**31 :
            return n 
        else:
            return 0

终于成功了,时间上解决的很好,可是空间上挺浪费的。

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

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

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