LeetCode7、整数反转

前言

前两天忙着处理其他事情,就单纯看了看算法题,并没有发出来给大家分享,然后现在是打算先刷力扣的简单题,那么今天给广大粉丝带来的是力扣第7题的解题思路和代码,希望大家支持…

题目描述

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过32位的有符号整数的范围[-22147483648,2147483647] ,就返回 0。

示例 1

输入:x = 123

输出:321

示例 2

输入:x = -123

输出:-321

示例 3

输入:x = 120

输出:21

解题思路:将x从Number对象转成String对象,用String对象的方法split将String分割成Array,然后用Array对象的reverse方法进行翻转,再用Array对象的join方法将Array转成String,最后将String变回Number。然后判断是否为负号 进行位运算取负号+1 如果超出范围返回0

coding

/**
 * @param {number} x
 * @return {number}
 */
var reverse = function(x) {
    var str = x.toString()
    let arr = str.split('') // 数组
    // 判断是否有负号
    if(arr[0] !== '-'){
        let num = Number(arr.reverse().join(''))
        if(num <= 2147483647 && num >= -22147483648){
          return num
        } else {
          return 0
        }
    } else if(arr[0] === '-'){
        delete arr[0]
        let num = Number(arr.reverse().join(''))
        if(num <= 2147483647 && num >= -22147483648){
          return ~num+1
        } else {
          return 0
        }
    }
};
// 时间复杂度O(n)
// 空间复杂度O(n)
复制代码

代码精简:

var reverse = function (x) {
    let y = parseInt(x.toString().split("").reverse().join(""));
    if (x < 0)
        y = - y;
    return y > 2147483647 || y < -2147483648 ? 0 : y;
};
复制代码

总结

刷题打卡第六天,选择力扣第7题,学习了反转整数,一起加油哇~

❤️ 感谢大家

如果你觉得这篇内容对你挺有有帮助的话:
点赞支持下吧,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-)关注公众号给npy的前端秘籍,我们一起学习一起进步。
觉得不错的话,也可以阅读其他文章(感谢朋友的鼓励与支持???)

开启LeetCode之旅

LeetCode之双指针

Leet27、移除元素

前端工程师必学的经典排序算法

LeetCode20、括号匹配

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享