>웹 프론트엔드 >JS 튜토리얼 >JavaScript 재미있는 질문: 짝을 이루는 괄호

JavaScript 재미있는 질문: 짝을 이루는 괄호

黄舟
黄舟원래의
2017-02-15 14:14:351480검색

'쌍'이 무엇을 의미하는지 빠르게 이해할 수 있도록 먼저 몇 가지 예를 살펴보겠습니다.


validParentheses( "()" ) // => returns true

왼쪽 괄호와 오른쪽 괄호, 짝처럼요.

다음은 두 쌍을 형성합니다.


validParentheses( "(())" ) // => returns true

N 쌍이라고 하는 좀 더 복잡한 것을 살펴보겠습니다.


validParentheses( "(())((()())())" ) // => returns true

다음 괄호는 "paired"라고 부를 수 없고 "lonely"라고만 부를 수 있습니다.


validParentheses( "(" ) // => returns false

이 예에서는 두 쌍이 있습니다. 형성되었지만 오른쪽 괄호가 두 개만 있습니다. ​​


validParentheses( ")(()))" ) // => returns false

알겠습니다. 제 소개를 들은 후 작업을 살펴보겠습니다.

validParentheses 작성 이 함수는 대괄호로 구성된 문자열을 받아들이고 대괄호가 "쌍"이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
모든 입력 문자열은 비어 있지 않으며 왼쪽 및 오른쪽 대괄호만 있습니다.

아이디어:

'쌍'이므로 '1:1 오프셋' 접근 방식을 취하겠습니다.

먼저 빈 스택을 준비하고, 왼쪽 괄호를 만나면 스택에 밀어넣고, 오른쪽 괄호를 만나면 '왼쪽 괄호'를 내뱉고, 두 개가 서로 오프셋됩니다.

모든 문자가 처리될 때까지 기다렸다가 스택 상태를 확인합니다. 스택이 비어 있으면 모든 괄호가 "쌍으로" 오프셋되어 있음을 의미합니다.

코드는 다음과 같습니다.


function validParentheses(parens){
    var stack = [];
    for(var i=0;i<parens.length;i++){
        var current = parens.charAt(i);
        switch(current){
            case "(":
                stack.push(current);
                break;
            case ")":
                var ele = stack.pop();
                if(ele === void 0){
                    return false;
                }
                break;
        }
    }
    return stack.length == 0;
}




위는 재미있는 JavaScript 질문입니다. Brackets, more 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.