'쌍'이 무엇을 의미하는지 빠르게 이해할 수 있도록 먼저 몇 가지 예를 살펴보겠습니다.
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)를 참고해주세요!