LeetCode 20. 유효한 괄호 JS
6653 단어 LeetCode
유효한 문자열 은 만족 해 야 합 니 다. 왼쪽 괄호 는 같은 유형의 오른쪽 괄호 로 닫 아야 합 니 다.왼쪽 괄호 는 반드시 정확 한 순서 로 닫 아야 한다.빈 문자열 은 유효한 문자열 로 여 겨 질 수 있 습 니 다.
예시 1:
: "()"
: true
예시 2:
: "()[]{}"
: true
예시 3:
: "(]"
: false
방법: 알고리즘
(1) 스 택 S 를 초기 화 합 니 다.(2) 표현 식 의 괄호 를 한 번 에 처리 합 니 다.(3) 괄호 를 열 면 우 리 는 그것 을 창고 에 밀어 넣 기만 하면 된다.이것 은 우리 가 잠시 후에 그것 을 처리 할 것 임 을 의미 하 며, 우 리 는 간단하게 앞의 하위 표현 식 으로 돌아 갈 것 이다.(4) 만약 에 우리 가 괄호 를 닫 는 것 을 만나면 우 리 는 창고 꼭대기 의 요 소 를 검사 합 니 다.스 택 꼭대기 의 요소 가 같은 유형의 왼쪽 괄호 라면 스 택 에서 꺼 내 서 계속 처리 합 니 다.그렇지 않 으 면 표현 식 이 잘못 되 었 음 을 의미 합 니 다.(5) 마지막 까지 남 은 스 택 에 요소 가 있다 면 표현 식 이 잘못 되 었 음 을 의미 합 니 다.
/**
* @param {string}
* @return {boolean}
*/
var isValid = function (s) {
let len = s.length;
let first = s[0];
if (len === 0) return true;
//
if (len % 2 != 0 || [')', ']', '}'].indexOf(first) != -1) {
return false
}
// , 。
let stack = [first];
const MAP = {
')': '(',
']': '[',
'}': '{',
}
for (let i = 1; i < len; i++) {
let length = stack.length;
let top = length > 0 ? stack[length - 1] : null;
let now = s[i];
if (MAP[now] === top) {
stack.pop();
} else {
stack.push(now);
}
}
return stack.length === 0
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 문자열 입력으로 모든 유효한 IP 주소 생성(LeetCode 93번 문제)이 문제의 공식 난이도는 Medium으로 좋아요 1296, 반대 505, 통과율 35.4%를 눌렀다.각 항목의 지표로 말하자면 보기에는 약간 규범에 맞는 것 같지만, 실제로도 확실히 그렇다.이 문제의 해법과 의도는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.