zoukankan      html  css  js  c++  java
  • 数据结构之整数反转

    题目信息

    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
    示例 1:
          输入: 123
          输出: 321
    示例2:
          输入: -123
          输出: -321
    示例 3:
          输入: 120
          输出: 21
    注意:
        假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 
        [−2^31,  2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

    解题思路

    从题目信息可以看出来,这道题简单来说就是数字反转,只是在要反转的数字
    为负数和末尾部分为0时要做处理,而且从注意来看一个数字反转过来时候可
    能越界。我的思路就是为负数时,记录一下,再将其转换成正数去处理。对于
    末尾你为0的,将数字对10进行取余直至余数不为0时为止。处理过程中判断一
    下是否越界

    代码

    func reverse(_ x: Int) -> Int {
        // 如果为0时直接返回
        if x == 0 {
            return 0;
        }
        var flag: Int = 0;
        var temp = x;
        // 如果为负数,用flag记录,并将其转为正数
        if x < 0 {
            flag = 1;
            temp = -temp;
        }
        
        // 对该正数进行对10取余,直至不为0是为止
        while temp % 10 == 0 {
            temp = temp / 10;
        }
        
        let numberString: String = String(temp)
        let reverseString = String(numberString.reversed())
        
        temp = Int(reverseString) ?? 0
        if flag > 0 {
            temp = -temp;
        }
        // 因为是字符串保存,判断是否越界
        if temp > 2147483647 || temp < -2147483648 {
            return 0;
        }
        return temp;
    }

    题目链接

  • 相关阅读:
    shell test用法
    Makefile debug的经验
    Makefile 中:= ?= += =的区别
    Makefile中常用的函数
    Makefile选项CFLAGS,LDFLAGS,LIBS
    makefile双冒号规则
    makefile中的伪目标,强制目标和双冒号规则
    makefile 使用环境变量
    linux shell if语句使用方法
    linux的test命令
  • 原文地址:https://www.cnblogs.com/muzichenyu/p/12777605.html
Copyright © 2011-2022 走看看