• Leecode刷题之旅-C语言/python-7.整数反转


    /*
     * @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类型(在这之前要判断其范围)

  • 相关阅读:
    Linux下Bind error: Address already in use处理
    详解基本TCP套接字函数
    C/C++常用头文件及函数汇总
    Centos编译Unix网络编程(第三版)卷1的源代码
    C++ 多线程中使用cout还是printf
    VIM常用指令
    Linux C头文件查找与动态库搜索
    linux常用头文件详解
    linux makefile自动生成
    ubuntu开机出现memtest86,重启也无法取消的原因
  • 原文地址:https://www.cnblogs.com/lixiaoyao123/p/10469764.html
Copyright © 2020-2023  润新知