Given a string containing just the characters ‘(‘, ‘)‘, ‘{‘, ‘}‘, ‘[‘ and ‘]‘, determine if the input string is valid.
An input string is valid if:
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
给定一个只包括 ‘(‘,‘)‘,‘{‘,‘}‘,‘[‘,‘]‘ 的字符串,判断字符串是否有效。
有效字符串需满足:
注意空字符串可被认为是有效字符串。
用栈模拟即可,注意开个map,而不是通过多次判断可以节约时间。
class Solution {
public:
bool isValid(string s) {
bool res = true;
if (s.size() == 0) return res;
map <char, char> mp = { {')','('}, {'}','{'}, {']','['} };
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() && st.top() == mp[s[i]])
{
st.pop();
}
else
{
res = false;
break;
}
}
}
if (!st.empty())
res = false;
return res;
}
}; [LeetCode]20 Valid Parentheses 有效的括号
原文:https://www.cnblogs.com/caomingpei/p/10624915.html