1. ホーム
  2. javascript

[解決済み] JavaScriptです。括弧のバランスをとる

2022-03-04 21:20:58

質問

<ブロッククオート

2種類の文字だけで構成される文字列があるとする。 (") (" ")"です。 . のどちらかを挿入して、括弧のバランスをとります。 "(" または ")"です。 を必要な回数だけ入力します。

挿入しなければならない最小の文字数を決定する。 例s = "(()))" . これを有効にするには、1つのシーケンスを挿入する必要があります。 "(" を先頭に追加します。これで、1回挿入しただけで文字列のバランスがとれました。答えは1です。

私の問題は、文字列は有効ですが、シーケンスを有効にする最小の挿入数を決定することができないことです。

let output = [];

function checkParanthesis(str) {
  let count = 0;
  for (let i = 0; i < str.length; i++) {
    if (str[i] === "(") {
      output.push(str[i]);
      count++;
    } else if (str[i] === ")") {
      if (output.pop() !== "(") {
        count++
      }
    }
    console.log(count);
  }
  return output.length;
}

checkParanthesis('()))')

解決方法は?

最後の開き括弧を追跡するための配列を取り、閉じ括弧が見つかったらそれを削除することができます。

閉じ括弧が見つからない場合は、他の文字を配列に追加して、その配列の長さを結果として返します。

function checkParanthesis(str) {
    let brackets = [];
    for (let i = 0; i < str.length; i++) {     
        if (str[i] === "(") {
            brackets.push(str[i]);
        } else if (str[i] === ")") {
            if (brackets[brackets.length - 1] === "(") brackets.pop();
            else brackets.push("#");
        }
    }
    return brackets.length;
}

console.log(checkParanthesis('()))'));