【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题目链接:https://leetcode.com/problems/valid-parentheses/
题意:
判断括号是否匹配
思路:
以一个栈保存左括号,每次有右括号进栈的时候,看右括号是否与栈顶的左括号匹配,如果不匹配则返回false
class Solution
{
public:
stack<char> st;
bool isValid(string s)
{
int len = s.length();
int i,j;
for(i = 0; i<len; i++)
{
if(s[i]=='('||s[i]=='['||s[i]=='{')//左括号进栈
st.push(s[i]);
else//右括号判断匹配
{
if(st.empty())
return 0;
char c = st.top();
st.pop();
if(c=='('&&s[i]!=')')
return 0;
if(c=='['&&s[i]!=']')
return 0;
if(c=='{'&&s[i]!='}')
return 0;
}
}
return st.empty();//只有栈内没有括号了,则匹配完成
}
};