力扣20.有效的括号

发布时间 2023-09-21 11:00:32作者: Coder何

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

 

示例 1:

输入:s = "()"
输出:true

 

示例 2:

输入:s = "()[]{}"
输出:true

 

示例 3:

输入:s = "(]"
输出:false

 

 

提示:

  • 1 <= s.length <= 104
  • s 仅由括号 '()[]{}' 组成

栈的经典应用

 1 class Solution {
 2 public:
 3     bool isValid(string s) {
 4         stack<char> check;
 5         map<char,char> mapped;
 6         mapped[')']='(';
 7         mapped[']']='[';
 8         mapped['}']='{';
 9         for (int i=0;i<s.length();++i){
10             if (s[i]=='('||s[i]=='{'||s[i]=='[')
11                 check.push(s[i]);
12             else{
13                 if (check.empty())
14                     return false;
15                 if (check.top()!=mapped.find(s[i])->second){
16                     return false;
17                 } else{
18                     check.pop();
19                 }
20             }
21         }
22         if (check.empty())
23             return true;
24         else
25             return false;
26     }
27 };