zoukankan      html  css  js  c++  java
  • 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类型(在这之前要判断其范围)

  • 相关阅读:
    some tips
    ORA00847: MEMORY_TARGET/MEMORY_MAX_TARGET and LOCK_SGA cannot be set together
    Chapter 01Overview of Oracle 9i Database Perfomrmance Tuning
    Chapter 02Diagnostic and Tuning Tools
    变量与常用符号
    Chapter 18Tuning the Operating System
    标准输入输出
    Trace files
    DBADeveloped Tools
    Chapter 03Database Configuration and IO Issues
  • 原文地址:https://www.cnblogs.com/lixiaoyao123/p/10469764.html
Copyright © 2011-2022 走看看