本文主要是介绍LeetCode第1249题: 移除无效的括号,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
首先要手动实现一个栈 MyStack
class MyStack {constructor() {this.arr = [];}push(val) {this.arr.push(val)}pop() {if (this.isEmpty()) return 0;return this.arr.pop()}top() {return this.arr[this.arr.length - 1];}isEmpty() {return this.arr.length == 0;}size() {return this.arr.length}clear() {this.arr = [];}output() {for (let i = 0; i < this.arr.length; i++) {console.log(this.arr[i])}}
}
/*** @param {string} s* @return {string}*/
var minRemoveToMakeValid = function (s) {let stack = new MyStack();let str = "";// 先处理多余的右括号for (let i = 0; i < s.length; i++) {if (s[i] == "(") {stack.push(s[i]);str += s[i];} else if (s[i] == ")") {if (stack.pop() != 0) {str += s[i]}} else {str += s[i]}}// 栈为空说明字符串合法if (stack.isEmpty()) return str;// 此时说明字符串中有多余的左括号,再次进行循环处理即可let nstr = "";stack.clear();for (let i = str.length - 1; i >= 0; i--) {if (str[i] == ")") {stack.push(str[i]);nstr = str[i] + nstr;} else if (str[i] == "(") {if (stack.pop() != 0) {nstr = str[i] + nstr;}} else {nstr = str[i] + nstr;}}return nstr
};
这篇关于LeetCode第1249题: 移除无效的括号的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!