如何检查字符串是否具有相等数量的这个";("并且在其前面有相应的")";在Jav



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

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 

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

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

所以我在手机上疯了。我可以这样对待它。

我会创建一个临时字符串来存储(例如,称之为左括号我也会创建另一个存储(,例如称之为右括号

所以我将遍历父字符串,看看我是否找到了一个左括号的字符,当我找到一个右括号的字符时,我将其附加到左括号变量中。

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

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’);
}

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

最新更新