대괄호, 중괄호, 소괄호가 알맞게 배열되어 있는지 확인하는 문제입니다.
Input: s = "()"
Output: true
Input: s = "(]"
Output: false
class Solution {
public:
bool isValid(string s) {
stack<char> st;
for(int i = 0; i<s.size();i++)
{
switch(s[i])
{
case '(':
st.push(s[i]);
break;
case '{':
st.push(s[i]);
break;
case '[':
st.push(s[i]);
break;
case ')':
if(st.empty()) return false;
else if(st.top() != '(') return false;
else st.pop();
break;
case '}':
if(st.empty()) return false;
else if(st.top() != '{') return false;
else st.pop();
break;
case ']':
if(st.empty()) return false;
else if(st.top() != '[') return false;
else st.pop();
break;
}
}
return st.empty();
}
};
string을 비교하는 함수라 그런지 실행속도는 다들 0ms 였다.
메모리를 진짜 적게 사용하는 코드를 보았는데
stack을 쓰지 않고, string을 쓰더라
생각해보니까 char 1개씩 비교할것이기 때문에 스트링이 더 적합한 것 같다.