面试了一个JS小试题,判断双括号字符串“(())()(())”类似的是否合法
当时只判断了字符串长度是否为偶,左括号与右括号个数是否一致来做判断。
但是回家一想,发现不够严谨,如果是“()))((”这样的就按照上面的来做判断就为true,但是此双括号并不合法
所以回到家从新修改代码小测试一下
废话不多说,直接上代码,如果发现错误,请留言
<script>
var str="()()()))";
// var str1="()))(("
function dubug(str){
if(str.length==0||str.length%2!=0){
return false;
}
var ary= str.split('');
var left=[];var leftcount=0; var rightcount=0;
for(var i=0;i<ary.length;i++){
debugger
if(ary[i]=="("){
leftcount++;
left.push(ary[i])
}
if(ary[i]==")"){
if(left.length!=0){
rightcount++
left.pop();
}
else{ return false}
}
}
if(left.length>0||leftcount!=rightcount){return false}
else {return true}
}
var bool;
bool=dubug(str);
// bool=dubug(str1);
console.log("是否合规:"+bool);
</script>