/*
 * @lc app=leetcode.cn id=7 lang=c
 *
 * [7] 整数反转
 *
 * https://leetcode-cn.com/problems/reverse-integer/description/
 *
 * algorithms
 * Easy (31.36%)
 * Total Accepted:    77.7K
 * Total Submissions: 247.8K
 * Testcase Example:  '123'
 *
 * 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
 * 
 * 示例 1:
 * 
 * 输入: 123
 * 输出: 321
 * 
 * 
 * 示例 2:
 * 
 * 输入: -123
 * 输出: -321
 * 
 * 
 * 示例 3:
 * 
 * 输入: 120
 * 输出: 21
 * 
 * 
 * 注意:
 * 
 * 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
 * 
 */
int reverse(int x) {
    long i =0;    
    long t = x;    
    while(t){
        i = i*10+(t%10);   
        t= t/10;   
    }
    if (i < INT_MIN || i >INT_MAX)  //判定是否在int可表达的有效范围内
    {
        return 0;
    }
    return i;
}

这道题相对来说很好理解,用余数除10的方法就可以实现整数的翻转。

要注意,这里设置成long类型,然后在最后判断是否在int范围内。否则会超出范围。

-----------------------------------------------------------------------------------------------------------------------------------

python:

#
# @lc app=leetcode.cn id=7 lang=python3
#
# [7] 整数反转
#
# https://leetcode-cn.com/problems/reverse-integer/description/
#
# algorithms
# Easy (31.70%)
# Total Accepted:    86K
# Total Submissions: 271.4K
# Testcase Example:  '123'
#
# 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
# 
# 示例 1:
# 
# 输入: 123
# 输出: 321
# 
# 
# 示例 2:
# 
# 输入: -123
# 输出: -321
# 
# 
# 示例 3:
# 
# 输入: 120
# 输出: 21
# 
# 
# 注意:
# 
# 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31,  2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
# 
#
class Solution:
    def reverse(self, x: int) -> int:
        plus_minus = ""
        reverse_x = ""
        if x<0:
            plus_minus = "-"
            x = -x
        for i in str(x):
            reverse_x = i + reverse_x
        reverse_x = plus_minus +reverse_x
        if int(reverse_x)>pow(2,31)-1 or int(reverse_x)<pow(-2,31):
            return 0
        return int(reverse_x)

python这里得益于高级脚本语言的便捷,可以先把整形转成字符串,按后一位+前一位 这样的方式就可以实现翻转。

然后再把字符串转换成int类型(在这之前要判断其范围)