一、有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
1、左括号必须用相同类型的右括号闭合。
2、左括号必须以正确的顺序闭合。示例 1:
输入:s = “()” 输出:true
示例 2:输入:s = “()[]{}” 输出:true
示例 3:输入:s = “(]” 输出:false
示例 4:输入:s = “([)]” 输出:false
示例 5:输入:s = “{[]}” 输出:true
提示:
1 <= s.length <= 104 s 仅由括号 ‘()[]{}’ 组成
/*
遍历每一个字符:
如果是左括号:入栈
如果是右括号:
与栈顶元素比较(前提是有栈顶元素),没有左出现了右,返回false,如果匹配,出栈
遍历完后,如果栈不为空,左多了,返回false
*/
class Solution {
public:
bool isValid(string str) {
std:: stack<char> s;
int size=str.size();
for(int i=0;i<size;i++)
{
char ch=str[i];
switch(ch)
{
case '(':
case '[':
case '{':s.push(ch);break;
case ')':
case ']':
case '}':
{
if(s.empty())
return false;
char left=s.top();
s.pop();
if(!((