一看到题目,想到的思路就是先把字符串的‘(’split掉,这样返回的数组length-1就是‘(’的个数,再把数组join(‘’),再split(‘)’),返回的数组length-1更刚才的是否相等
但是发现 这样判断不了有效性 只能判断()的个数相等
后面发现()个数只是有效性判断的其中一个条件而已,还是需要一个变量去判断有效性
let check = true;
const checked = '()(()())()'.split('(').reduce((acu,cur,idx)=>{
idx > 0 && (acu += 1);
acu -= (cur.split(')').length - 1);
check && (check = acu >= 0);
return acu
},0)
checked !== 0 && (check = false)
console.log('checked', checked)
或者在循环时候用for循环 check为false的时候 break 跳出循环 这样更有效率