Problem solving/LeetCode
[LeetCode] 20. Valid Parentheses (C++)
겸
2023. 6. 30. 01:28
문제
괄호들이 주어질 때 괄호 구문이 올바른지 여부
생각할 것
자주 나오는 유형의 문제로 나는 항상 스택을 활용했다!
한 방향의 괄호를 넣고 반대 방향의 괄호가 나올 때 스택에서 가장 위에 있는 값을 비교하며 없앤다.
마지막에 스택이 비어있는 경우에만 유효한 구문이다.
코드
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;
}
}
};
반응형