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

作者: coenen | 来源:发表于2021-08-17 07:40 被阅读0次
    给你一个 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

    考察要点:

    • 数学

    相关文章

      网友评论

        本文标题:初级算法-字符串-整数反转

        本文链接:https://www.haomeiwen.com/subject/uxkjbltx.html