zoukankan      html  css  js  c++  java
  • 整数反转(Python and C++解法)

    题目:

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

    示例 1:

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

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

    输入: 120
    输出: 21
    注意:

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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/reverse-integer

    思路:

    可以直接辗转相除,依次获得原始数据尾巴的数字;也可以采用双指针法,跳过特殊条件。

    需要考虑三处细节:1.负号;2.数字尾巴的‘0’;3.数字溢出;

    Python解法:

     1 class Solution:
     2     def reverse(self, x: int) -> int:
     3         if x == 0:  # 这种情况需要特殊考虑,负责tail会数组越界
     4             return 0
     5         numStr = list(str(x))  # python的字符串不能直接操作下标,需要转换为列表
     6         lenStr = len(numStr)
     7         head = 0
     8         tail = lenStr - 1
     9         storeIndex = 0  # 记录数据除‘0’之外的末尾数字的位置
    10         while numStr[head] == '-':
    11             head += 1
    12         while numStr[tail] == '0':
    13             tail -= 1
    14         storeIndex = tail
    15         while head < tail:
    16             numStr[head], numStr[tail] = numStr[tail], numStr[head]
    17             head += 1
    18             tail -= 1
    19         strNum = int(''.join(numStr[:storeIndex + 1]))  # 列表需要先转换为字符串,再转换为数字
    20         if strNum >= -2147483648 and strNum <= 2147483647:
    21             return strNum
    22         return 0

    C++解法:

     1 class Solution {
     2 public:
     3     int reverse(int x) {
     4         if(x == -2147483648 || x == 2147483647)  // 当输入数字整好是边界值时,不能正确进行正负转换,需要提前判断
     5             return 0;
     6         bool flag = false;
     7         if(x < 0) {  // 转换为正数统一处理
     8             x = -x;
     9             flag = true;
    10         }
    11         long long num = 0;  // 不能申请为int型
    12         while(x) {
    13             num = num * 10 + x % 10;
    14             x = x / 10;
    15         }
    16         if(flag)
    17             num = -1 * num;
    18         if(num >= -2147483648 && num <= 2147483647)
    19             return num;
    20         return 0; 
    21     }
    22 };
  • 相关阅读:
    禁止google浏览器强制跳转为https
    遍历打印文件目录结构
    添加忽略文件
    部署git服务器
    Location, History, Screen, Navigator对象
    Window 对象
    回调函数,setTimeout,Promise
    闭包
    this
    函数内部运作机制—上下文
  • 原文地址:https://www.cnblogs.com/kongzimengzixiaozhuzi/p/13516848.html
Copyright © 2011-2022 走看看