Leetcode 3、4、8:无重复最长子串-中位数-字符串转换整数

自己从0到1的思路,仅供参考:
一:无重复字符的最长子串

var lengthOfLongestSubstring = function(s) {
    var s1 = ''
    var s2 = ''
    var l = 0

    while(l < s.length) {
        for(var i=l;i<s.length;i++){
            if(!s1.includes(s[i])){
                s1 += s[i]
            } else {
                ++l
                if(s1.length > s2.length) {
                    s2 = s1
                    s1 = ''
                } else {
                    s1 = ''
                }
                break
            }
        }
       
    }

    return s2.length
};

二:寻找两个正序数组的中位数

var findMedianSortedArrays = function(nums1, nums2) {
    var arr = nums1.concat(nums2)
    arr.sort((a,b) => {
        if(a-b > 0) {
            return 1
        } else {
            return -1
        }
    })
    if(arr.length % 2 === 0) {
        var num = (arr[arr.length / 2 -1] + arr[arr.length / 2])/2
        return num
    } else {
        var num = arr[Math.floor(arr.length / 2)]
        return num
    }
};

三:字符串转换整数

var myAtoi = function(s) {
    var n1 = s.trimStart()

    if((!(/^\d+/).test(n1) || (/ \+ | \- /g).test(s)) && !(/^\d/).test(n1[1])){
        return 0
    }

    if(s.length<=1 && (s === '-' || s === '+')) {
        return 0
    }

    if((/\d|\+/g).test(n1[0])){
        var n2 = n1.match(/(\d+)/g)[0]
        // 判断临界
        if(Number(n2) > (Math.pow(2, 31) - 1)) {
            return Math.pow(2, 31) - 1
        }
        return Number(n2)

    } else if(n1[0] === '-') {
        var n2 = n1.split(/\-/g)[1].trimStart()
        // 如果字符串第一个字符是数字
        if((/\d/g).test(n2[0])){
            var n3 = n2.match(/(\d+)/g)[0] //匹配正负数,取第一组数字
            
            // 判断临界
            if(-Number(n3) < Math.pow(-2, 31)) {
                return Math.pow(-2, 31)
            }
            return -Number(n3)
        } else {
            return 0
        }
    } else {
        return 0
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值