leetcode301.刪除無效字元
阿新 • • 發佈:2022-01-02
leetcode301.刪除無效字元
題目
給你一個由若干括號和字母組成的字串 s ,刪除最小數量的無效括號,使得輸入的字串有效。
返回所有可能的結果。答案可以按 任意順序 返回。
用例
輸入:s = "()())()"
輸出:["(())()","()()()"]
輸入:s = "(a)())()"
輸出:["(a())()","(a)()()"]
輸入:s = ")("
輸出:[""]
求解
/** * @param {string} s * @return {string[]} */ var removeInvalidParentheses = function(s) { let mySet = new Set() let maxlength = 0 let res = [] dfs(0,0,0,s,'') for(let v of mySet){ if(v.length==maxlength){ res.push(v) } } return res function dfs(left,right,index,str,curr){ if(right==left){ mySet.add(curr) maxlength = Math.max(maxlength,curr.length) } if(right>left||index==str.length){ return } if(str[index]=='('){ dfs(left+1,right,index+1,str,curr+'(') dfs(left,right,index+1,str,curr) }else if(str[index]==')'){ dfs(left,right+1,index+1,str,curr+')') dfs(left,right,index+1,str,curr) }else{ dfs(left,right,index+1,str,curr+str[index]) } } };