leetcode Day56 剑指专项85-87

95 阅读1分钟

剑指 Offer II 085. 生成匹配的括号

var generateParenthesis = function(n) {
    const res=[]
    const dfs=(cur,left,right)=>{
        if(left>n || right>left){
            return
        }
        if(cur.length===n*2){
            res.push(cur)
            return
        }
        dfs(cur+'(',left+1,right)
        dfs(cur+')',left,right+1)
    }
    dfs('',0,0)
    return res
};

剑指 Offer II 086. 分割回文子字符串

var partition = function(s) {
    let res=[]
    let path=[]
    const dfs=(idx)=>{
        if(idx===s.length){
            res.push([...path])
            return
        }
        let cur=''
        for(let i=idx;i<s.length;i++){
            cur+=s[i]
            if(cur!=cur.split('').reverse().join(''))continue
            path.push(cur)
            dfs(i+1)
            path.pop()
        }
    }
    dfs(0)
    return res
};

剑指 Offer II 087. 复原 IP

var restoreIpAddresses = function(s) {
    const res=[]
    if(s.length>12 ||s.length<4)return res
    const path=[]
    const dfs=(idx)=>{
        if(path.length>4)return
        if(path.length===4 && idx===s.length){
            res.push(path.join('.'))
            return
        }
        let cur=''
        for(let i=idx;i<s.length;i++){
            cur+=s[i]
            if(Number(cur)>=0 && Number(cur)<=255 && (cur[0]!=='0' || cur==='0')){
                path.push(cur)
                dfs(i+1)
                path.pop()
            }
        }
    }
    dfs(0)
    return res
};