给定模拟字符串'[()]{{}}',给定字符串只含有括号,要求括号闭合。
不合法字符串形如[(]){},{[](),{(})[],}{}{[]
基本思路:
-
给定字符串的字符数一定为偶数
-
遇到右半边括号时,它左侧相邻的必定是同种类型的左半边括号
let arr = [] function isLegal(str) { let strArr = str.split('') if (str.length % 2 !== 0) { return '不合法' } strArr.forEach(item => { let len = arr.length - 1 switch (item) { case '{': arr.push('{') break; case '[': arr.push('[') break; case '(': arr.push('(') break; case '}': if (arr[len] === '{') { arr.pop() } break; case ']': if (arr[len] === '[') { arr.pop() } break; case ')': if (arr[len] === '(') { arr.pop() } break; } }); return arr.length === 0 ? '合法' : '不合法' } console.log(isLegal('{(})[]')); //不合法