面試了一個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>