原题地址:https://leetcode-cn.com/problems/valid-parentheses/
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
思路:单栈。遍历字符串,遇到三种括号中任何一种左括号,均入栈同种右括号,由于有效字符串均需要成对出现,所以仅需要在后续遇字符为右括号时与栈顶元素进行配对即可判定。
class Solution {
public:
bool isValid(string s) {
stack<char> stack;
for(int i=0;i<s.length();i++){
char c =s[i];
if(c=='(')stack.push(')');
else if(c=='[')stack.push(']');
else if(c=='{')stack.push('}');
else if(stack.empty())return false;
else{
char a=stack.top();
if(c!=a) return false;
stack.pop();
}
}
return stack.empty();
}
}
青古の每篇一歌
《红韶愿》
眉目刚烈拟作妆嫁
轰烈流沙枕上白发