문제
괄호들이 주어질 때 괄호 구문이 올바른지 여부
생각할 것
자주 나오는 유형의 문제로 나는 항상 스택을 활용했다!
한 방향의 괄호를 넣고 반대 방향의 괄호가 나올 때 스택에서 가장 위에 있는 값을 비교하며 없앤다.
마지막에 스택이 비어있는 경우에만 유효한 구문이다.
코드
class Solution {
public:
bool isValid(string s) {
stack<char> st;
for(int i=0; i<s.size(); i++){
if(s[i] == '(' || s[i] == '{' || s[i] == '['){
st.push(s[i]);
} else {
if(!st.empty()){
if(st.top() == '(' && s[i] == ')'){
st.pop();
} else if(st.top() == '{' && s[i] == '}') {
st.pop();
} else if(st.top() == '[' && s[i] == ']') {
st.pop();
}
else {
return false;
}
}
else{
return false;
}
}
}
if(!st.empty()){
return false;
}
else {
return true;
}
}
};
반응형
'Problem solving > LeetCode' 카테고리의 다른 글
[LeetCode] 22. Generate Parentheses (C++) (0) | 2023.06.30 |
---|---|
[LeetCode] 21. Merge Two Sorted Lists (C++) (0) | 2023.06.30 |
[LeetCode] 19. Remove Nth Node From End of List (C++) (0) | 2023.06.30 |
[LeetCode] 17. Letter Combinations of a Phone Number (C++) (0) | 2023.06.29 |