こんにちは!
今回は「Javascriptでカッコ列(ブラケット / brackets)が正しいかどうか判定する方法」についてお伝えしたいと思います。
アルゴリズムの勉強をしており、配列にカッコ列について理解したので共有したいと思います。
カッコ列が正しいかどうか判定する方法
まず、カッコ列が正しいと言える条件です。
ポイント
カッコの始まり(
とカッコの終わり)
の数が等しい または カッコが存在しない
文字列の先頭から見た時、「(の数」 >= 「)の数」が常に成り立つこと
以下に具体例を用いて説明します。
const checkBrackets = (input) => {
const targetArr = input.match(/\(|\)/g); // (, )以外を除去
if (!targetArr) return true;
const targetStr = targetArr.join(''); // 一致した文字列の配列を結合
let depth = 0; // カッコ()の深さ
for (let i = 0; i < targetStr.length; i++) {
if (targetStr[i] === '(') depth++;
if (targetStr[i] === ')') depth--;
if (depth < 0) return false; // カッコ()の深さが負の数になった時点で誤り
}
if (depth !== 0) return false;
return true;
}
console.log(checkBrackets('(aaa)(bbb)')); // true
console.log(checkBrackets('((())())')); // true
console.log(checkBrackets('(()')); // false
console.log(checkBrackets('))bbb((')); // false
console.log(checkBrackets('abc')); // true
これでカッコが正しいかどうか判別することができます。
以上、お疲れさまでした〜🍵