给定模拟字符串'[()]{{}}'
,给定字符串只含有括号,要求括号闭合。
不合法字符串形如[(]){}
,{[]()
,{(})[]
,}{}{[]
基本思路:
-
给定字符串的字符数一定为偶数
-
遇到右半边括号时,它左侧相邻的必定是同种类型的左半边括号
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('{(})[]')); //不合法