首页 > 试题广场 >

判断小括号是否闭合

[编程题]判断小括号是否闭合
  • 热度指数:423 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
创建一个函数来判断给定的长度为n的表达式中的小括号是否闭合。(表达式不完全由括号组成,只要括号合法,就返回true)

var expression = "(())()()"
var expressionFalse = "()(()";
isBalanced(expression); // true
isBalanced(expressionFalse); // false

isBalanced(""); // true

数据范围:
进阶:时间复杂度,空间复杂度

输入描述:
输入为需要判断的变量,如(())()() 或 ()(() 或 ""


输出描述:
输出为布尔值,true或false
示例1

输入

()

输出

true
示例2

输入

(

输出

false
示例3

输入

""

输出

true
let stack=0;
let strArr=readline().split("");
strArr.forEach((i)=>{
    if(i=="("){
        stack++;
    }
    if(i==")"){
        stack--;
    }
})
console.log(stack==0);

发表于 2022-03-25 13:21:13 回复(0)
function fun(str) {
    const fn = b => {
     if (b.length>1) {
        b = b.replace('()','');
        return fn(b);
        } else {
            return b;
        }
    }
    const sss = fn(str)
    console.log(sss.length === 0,sss)
   
}
发表于 2021-04-26 16:58:40 回复(0)
if(n=='')returntrue
      let a=[],len=n.length
      for(let i=0;i<len;i++){
          if(n[i]=='('){
              a.push(n[i])
          }
          if(n[i]==')'){
              if(a.length>0){
                  a.pop()
              }else{
                  returnfalse
              }
          }
      }
      if(a.length>0){
          returnfalse
      }else{
          returntrue
      }
发表于 2022-03-23 15:08:31 回复(0)
const readline = require('readline');
const rl = readline.createInterface({
    input:process.stdin,
    output:process.stdout
})

rl.on('line',(input:any)=>{
    let opArr = Array.from(input);
    let waitToClose = 0;
    while(opArr.length!=0){
        let tempOp = opArr.shift();
        if(tempOp==='('){
            ++waitToClose;
        }
        if(tempOp===')'){
            --waitToClose;
        }
    }
    console.log((waitToClose === 0));
})

发表于 2021-09-14 17:09:38 回复(0)
const readline=require('readline');
const rl=readline.createInterface({
    input:process.stdin,
    output:process.stdout
});
rl.on('line',line=>{
   console.log(isBalanced(line));
})

function isBalanced(str){
    str=str||"";
    str=str.trim();
    let left=0;
    for(let i=0;i<str.length;i++){
        if(str[i]==='('){
           left++;
        }
        if(str[i]===')'){
            if(left>0){
                left--;
            }else{
                return false;
            }
        }
    }
    return left===0;
}


发表于 2021-05-07 21:18:36 回复(0)
简单思路:先初始化一个计数器n=0,如果出现“(” 则加一,出现“)”则减一,最后判断n是否等于0,等于0则闭合,反之不闭合!
发表于 2021-05-04 16:15:30 回复(2)