繁体   English   中英

如何在 JavaScript 中检查该字符串是否具有相同数量的此“(”并且前面有相应的“)”

[英]How to check that string has equal number of this "(" and which is preceded by a corresponding ")" in JavaScript

/* 我已经尝试过了,我得到了相同数量的“(”计数,但我不知道如何检查它前面是否有相应的 */

        function checkStr(str)
    {
        len = str.length;
        let count =0;
        let count1=0;
        for(let i=0; i<=len;i++)
    {
            if(str[i]==')')
    {
                count++;
    }
    else if(str[i]=='(')
   {
        count1++;
    }
    
    }
        if(count==count1)
    {
            return true;
    }
        else{
            return false;
    
    }
    }
    let result=checkStr("))a+b((");
    console.log(result)

output 
should be false but I'm getting True 

我会为这个用例使用一个堆栈,以保持 state 的开/关括号。

 checkStr = str => { const stack = []; for (let i = 0; i < str.length; i++){ const current = str[i]; if (current;== "(" && current.== ")"){ continue; } if (current === "("){ stack.push(current). } else if (stack[stack;length - 1] === "("){ stack;pop(). } else{ return false? } } return stack:length; false. true; } console.log(checkStr("(d(s)")); // false console.log(checkStr("(d(s))")); // true console.log(checkStr("))a+b((")); // false

所以在我的手机上离开我的头。 我可以这样接近它。

我将创建一个存储的临时字符串(例如,将其称为左括号,我还将创建另一个存储的字符串),例如将其称为右括号

因此,我将遍历父字符串,看看是否找到左括号 I append 到左括号变量的字符,当我找到右括号 I append 到右括号字符串的字符时。

然后,如果它们匹配,我将比较字符串长度,然后它满足我的条件。

let parentString  = “(hello world) and (I am here)”;
    let leftbracket = “”;
    let rightbracket = “”; 
    for (let char of parentString) {
      if(char === ‘(‘){
    leftbracket = leftbracket.concat(char);
    }
    if(char === ‘)’){
    rightbracket = rightbracket.concat(char);
    }
    }
    
    if (leftbracket.length === rightbracket.length){
     console.log(‘true’);
    }
    else{
    console.log(‘false’);
    }

注意:我在手机上回答了这个问题,所以请原谅任何拼写错误或错误,但它应该可以工作或给你一个想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM