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

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

黄舟
풀어 주다: 2017-02-15 14:14:35
원래의
1484명이 탐색했습니다.

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


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)를 참고해주세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿