LeetCode第七题—Python版本


title: LeetCode No.7

categories:

  • OJ
  • LeetCode

tags:

  • Programing
  • LeetCode
  • OJ

LeetCode第七题

今天晚上看了会直播,所以来晚了,一般不缺勤呢。过几天反向跑毒完,我回家还要坚持背英语。

题目描述

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

注意:

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

示例 1:

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

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

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

输入:x = 0
输出:0
 

提示:

-231 <= x <= 231 - 1

代码

Python版本

class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        flag = False

        if x == 0:
            return x
        if x < 0:
            flag = True
            x = abs(x)
        item = list(str(x))
        item_reverse = item[::-1]
        result = ''
        for i in range(len(item_reverse)):
            result += item_reverse[i]
        result = int(result)
        if flag:
            result = -1 * result
        if result < -(2**31) or result > (2**31):
            return 0
        return result

if __name__ == '__main__':
    s = Solution()
    print(2**31)
    print(s.reverse(1534236469))

C++版本

#include <string.h>
#include <algorithm>
#include <math.h>
class Solution {
public:
    int reverse(int x) {
        int result = 0;
        int pop = 0;
        while(x != 0){
            pop = x % 10; //取出最右变得数字
            x /= 10; //实际上就是完成了 从 123 变成 12 并且取出 3 
            if(result > INT_MAX / 10 || (result == INT_MAX / 10 && pop > 7)){//判断上限
                return 0;
            }
            if(result < INT_MIN / 10 || (result == INT_MIN / 10 && pop < -8)){//判断下限
                return 0;
            }
            result = result * 10 + pop;
        }
        return result;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_16184125/article/details/112644642