leetcode_20
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
An input string is valid if:
Open brackets must be closed by the same type of brackets. Open brackets must be closed in the correct order. Note that an empty string is also considered valid.
Example 1:
Input: "()"
Output: true
Example 2:
Input: "()[]{}"
Output: true
Example 3:
Input: "(]"
Output: false
Example 4:
Input: "([)]"
Output: false
Example 5:
Input: "{[]}"
Output: true
Solutions
stack
This application is widely taught in textbooks related to data structure and algorithms.
class Solution {
public:
bool isValid(string s) {
stack<char> st;
for (auto c : s) {
// speculated that ( and ) or [ and ] are very close in ascii code
if (st.size() && abs(st.top() - c) <= 3 && st.top() != c)
st.pop();
else
st.push(c);
}
return st.empty();
}
};
Last updated
Was this helpful?