有效的括号
empty: 判断栈是否为空,当栈为空时返回ture,当栈不为空时返回false。
20. 有效的括号
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
示例 4:
输入:s = "([])"
输出:true
class Solution {
public:bool isValid(string s) {if(s.size()%2==1){return false;}stack<char>st;for(int i=0;i<s.size();i++){if(s[i]=='(') st.push(')');else if(s[i]=='{') st.push('}');else if(s[i]=='[') st.push(']');else if(st.empty()||st.top()!=s[i]) return false;else st.pop();}return st.empty();}
};
判断字符串长度是否为奇数,如果是奇数的话返回false。创建一个char类型的栈,名为st。定义一个整型变量i,i等于0,小于字符串长度时,进入循环。如果s的第i个元素为‘(’时,插入‘)’,方便后续 匹配。‘{’‘[’同理。如果栈不为空且栈的顶部元素不等于s的第i个元素时返回false。否则踢出顶部元素。跳出循环。返回empty,目的是判断栈是否为空,当栈为空时返回ture,当栈不为空时返回false。判断栈是否为空,当栈为空时返回ture,当栈不为空时返回false。