[スタック]有効なかっこ

1248 ワード

スタック(Last in first):後で入力するデータを最初に出力する構造
代表的な方法:push->pop
問題の説明
かっこは「(アルファベットで開く場合は、アルファベット「」で閉じる必要があります).例:
「()」()または「()」()は有効なかっこです.
)()(""または()()は無効なかっこです.
指定された文字列sが「(」または「)のみで構成されている場合は、解関数を完了し、文字列sが正しいカッコである場合はtrueを返し、カッコが正しくない場合はfalseを返します.
せいげんじょうけん
文字列sの長さ:100000未満の自然数
文字列sは「(」または「)」のみからなる.
I/O例
s answer
"()()" true
"(())()" true
")()(" false
"(()(" false
function solution(s){
    let answer = true;
    let stack = [];
    
    if (s[0] === ')') answer = false;
    else {
        for (let i of s) {
            if (i === '(') stack.push(i);
            else if (i === ')') stack.pop();
        }
        
        if (stack.length !== 0) answer = false;
    }
    
    return answer;
}
function solution(input){
    let answer = true;
    const stack = []
    input.split('').forEach((char) => {
        if (char === '(') {
            stack.push('(')
            return
        }
        if (stack.length === 0) {
            answer = false
            return
        }
        stack.pop()
    })

    return answer && stack.length === 0;
}