zoukankan      html  css  js  c++  java
  • 整数反转

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

    示例 1:  输入: 123
             输出: 321
    示例 2:  输入: -123
             输出: -321
    示例 3:  输入: 120
             输出: 21
    注意:  假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

    来源:https://leetcode-cn.com/problems/reverse-integer/

    法一:自己的代码

    特点:内存大,耗时短

    思路:先判断正负并记录,再将int转为string删除末尾的0,对其进行分割后反序,最后转为int,加上符号输出

    class Solution:
        def reverse(self, x: int) -> int:
            if x == 0:
                return 0
            else:
                if x >= 0:
                    sign = 1
                else:
                    sign = -1
                    x = abs(x)
                # 去掉末尾的0
                x = str(x).rstrip('0')
                def fenge(element):
                    return element
                # 分割 反转 连接
                x_list = list(map(fenge, x))
                x_list.reverse()
                x_afterreverse = ''.join(x_list) # join函数用于连接list中的字符串
    
                # print(x_afterreverse)
                # print(x_list)
                # print(type(x_afterreverse))
    
                x_afterreverse = int(x_afterreverse)
    
                if ( x_afterreverse > 2 ** 31) or ( x_afterreverse <= -2 ** 31):
                    print('绝对值太大了')
                    return 0
                else:
                    return x_afterreverse * sign
    
    
    if __name__ == '__main__':
        duixiang = Solution()
    
        ww = duixiang.reverse(0)
        print('结果是:', ww)
    View Code

     法二:思路同法一,但很简洁

    思路:先利用切片对字符串进行反转,并去掉负号,再对其判断是否超返回,并返回结果。

    class Solution(object):
        def reverse(self, x: int) -> int:
            s = str(x)[::-1].rstrip('-')  # 如果有负号去掉负号变为正数
            print(s)
            print(type(s))
            if int(s) < 2 ** 31:
                if x >= 0:
                    return int(s)
                else:
                    return 0 - int(s)
            return 0
    
    if __name__ ==  '__main__':
        duixiang = Solution()
    
        kk = duixiang.reverse(-4556635)
        print(kk)
    View Code
  • 相关阅读:
    ActionResult 的返回类型
    MVC4.0中ViewBag、ViewData、TempData和ViewModel几种传值方式的区别
    抛出异常的区别 throw 和throw ex
    字段的重复校验问题
    bootstrap 动态添加验证项和取消验证项
    VS快捷键大全(转)
    数组、List和ArrayList的区别
    处理两个泛型集合差异化
    传参的两种方式
    tomcat中web项目编译后的结构
  • 原文地址:https://www.cnblogs.com/xxswkl/p/11373050.html
Copyright © 2011-2022 走看看