leetcode-20.有效的括号

Posted yocichen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-20.有效的括号相关的知识,希望对你有一定的参考价值。

leetcode-20.有效的括号

题意

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

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

示例 1:

输入: "()"
输出: true

示例 2:

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

示例 3:

输入: "(]"
输出: false

示例 4:

输入: "([)]"
输出: false

示例 5:

 输入: "{[]}"
 输出: true

算法
  1. 栈机制:遍历字符串,遇到左括号压栈,遇到右括号判断:若有与之匹配的左括号,弹栈,若不匹配,直接返回false
  2. 遍历完字符串,判断栈空,若空,返回true;否则,返回false

code

 1 class Solution {
 2 public:
 3     bool isValid(string s) {
 4         //栈机制:遍历字符串,遇到左括号压栈,遇到右括号判断:若有与之匹配的左括号,弹栈,若不匹配,直接返回false
 5         //遍历完字符串,判断栈空,若空,返回true;否则,返回false
 6         vector<char> str;
 7         for(int i=0; i<s.size(); i++)
 8         {
 9             if(s[i] == ( || s[i] == [ || s[i] == {)
10             {
11                 str.push_back(s[i]);
12             }
13             else if(s[i] == ))
14             {
15                 if(str.empty())
16                     return false;
17                 if(str.back() == ()
18                 {
19                     str.pop_back();
20                 }
21                 else
22                 {
23                     return false;
24                 }
25             }
26             else if(s[i] == ])
27             {
28                 if(str.empty())
29                     return false;                
30                 if(str.back() == [)
31                 {
32                     str.pop_back();
33                 }
34                 else
35                 {
36                     return false;
37                 }
38             }
39             else if(s[i] == })
40             {
41                 if(str.empty())
42                     return false;
43                 if(str.back() == {)
44                 {
45                     str.pop_back();
46                 }
47                 else
48                 {
49                     return false;
50                 }
51             }
52         }
53         return str.empty();
54     }
55 };

 


以上是关于leetcode-20.有效的括号的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 20. 有效的括号

leetcode20有效的括号

leetcode-20.有效的括号

LeetCode 20. 有效的括号

LeetCode 20. 有效的括号

精选力扣500题 第39题 LeetCode 20. 有效的括号c++/java详细题解