力扣 初级算法 全套力扣精解

初级算法-字符串-整数反转

2021-08-17  本文已影响0人  coenen
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。

摘一个示例做个说明.
示例 1:
输入:x = 123
输出:321
条件分析:
  1. 有符号数 -> 存在正负
  2. 32位 -> 数据长度有限,超出后返回0
解决思路1:
  1. 根据分析2,考虑输入和输出是否数据超限
  2. 通过递归不断求每一位上的数据和余数,通过商判断是否跳出循环,通过余数进行计算返回值
解决办法

代码实现-Swift版本:

思路1代码:

func reverse(_ x: Int) -> Int {
    // 先判断输入内容是否超限
    if x < Int(powl(-2, 31)) || x > Int(powl(2, 31)) - 1 {
        return 0
    }
    var num = x
    var result: Int = 0
    // 递归
    while num != 0 {
        // 求余
        let mod = num % 10
        // 返回数据 = 上一步的返回数据 乘以 10 加上这次循环余数
        result = result * 10 + mod
        // 不断减小num,跳出循环
        num = num / 10
    }
    // 判断结果内容是否超限
    if result < Int(powl(-2, 31)) || result > Int(powl(2, 31)) - 1 {
        return 0
    }
    return result
}

测试用例:

let num = 1534236469

考察要点:

上一篇下一篇

猜你喜欢

热点阅读