记录一次面试失败,但是后知后觉又非常简单的面试题:如何校验字符串中‘()’的合法性
作者:互联网
一看到题目,想到的思路就是先把字符串的‘(’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 跳出循环 这样更有效率
标签:面试题,后知后觉,&&,校验,length,split,acu,checked,check 来源: https://www.cnblogs.com/allenBlog/p/15533701.html