leetcode Day37 剑指专项 11-13

104 阅读1分钟

467. 环绕字符串中唯一的子字符串

var findSubstringInWraproundString = function(p) {
    let arr=new Array(26).fill(0)
    let k=0
    for(let i=0;i<p.length;i++){
        if(i>0 && (p[i].charCodeAt()-p[i-1].charCodeAt()+26)%26===1){
            k++
        }else{
            k=1
        }
        arr[p[i].charCodeAt()-'a'.charCodeAt()]=Math.max(k,arr[p[i].charCodeAt()-'a'.charCodeAt()])
    }
    return arr.reduce((a,b)=>a+b)
};

剑指 Offer II 011. 0 和 1 个数相同的子数组

var findMaxLength = function(nums) {
    let map=new Map()
    map.set(0,-1)
    let pre=0,res=0
    for(let i=0;i<nums.length;i++){
        pre+=nums[i]===0?-1:1
        if(map.has(pre)){
            res=Math.max(res,i-map.get(pre))
        }else{
            map.set(pre,i)
        }
    }
    return res
};

剑指 Offer II 012. 左右两边子数组的和相等

var pivotIndex = function(nums) {
    let sum=nums.reduce((a,b)=>a+b)
    let pre=0
    for(let i=0;i<nums.length;i++){
        if(pre*2+nums[i]===sum){
            return i
        }else{
            pre+=nums[i]
        }
    }
    return -1
};