1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| let str = "[)(]"; function check(str) { let arr = str.split(""); let stack = new Stack(); let readString = "({[]})"; let temp = []; let ruler = new Map(); for (let i = 0; i < arr.length; i++) { if (readString.indexOf(arr[i]) < 3) { let key = readString[readString.length - 1 - readString.indexOf(arr[i])]; ruler.set(arr[i], key); stack.push(arr[i]); } else { temp.push(arr[i]); } } if (temp.length !== stack.getLength()) { return false; } for (let j = 0; j < temp.length; j++) { let target = stack.pop(); if (!target) { return false; } target = ruler.get(target); console.log(target + ":" + temp[j]); if (target !== temp[j]) { return false; } } return true; } console.log(check(str));
|