通过字典的方式实现
- 时间复杂度:O (n)
空间复杂度:O (n)
function isValid(s) {if (s.length % 2 === 1) {return false;}const stack = [];const map = new Map();map.set('(', ')');map.set('{', '}');map.set('[', ']');for (let i = 0; i < s.length; i++) {const item = s[i];if (map.has(item)) {stack.push(item);} else {const top = stack[stack.length - 1];if (map.get(top) === item) {stack.pop();} else {return false;}}}return stack.length === 0;}
上方代码只有一层 for 循环所以时间复杂度是 O (n)。同理空间复杂度是 O (n) 因为开辟的空间 stack 的长度是受 n 影响的,而 map 的长度是固定的只有3个,所以忽略不计。
