leetcode原题
解题思路
- 先将字符串转为数组,方便操作。
- 遍历数组,如果遇到“(”,就把索引添加到栈中,如果遇到“)”,需要判断。如果栈的长度为0,则为无效反括号,直接置为空(方便后面join删除),如果栈中有值,则栈顶出栈。
- 循环完后如果栈长度不为0,则说明有多余的"(", 遍历栈,并从数组中将该索引元素置为空。
- 最后返回join('')后的字符串
var minRemoveToMakeValid = function(s) {
let stack = []
let arr = s.split('')
for(let i = 0; i < arr.length; i++) {
if (arr[i] === '(') {
stack.push(i)
}
if (arr[i] === ')') {
if (stack.length <= 0) {
arr[i] = ''
} else {
stack.pop()
}
}
}
for (let i = 0; i < stack.length; i++) {
arr[stack[i]] = ''
}
return arr.join('')
};