码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode-20.有效的括号

时间:2019-01-15 14:19:31      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:||   相同   push   输入   vector   als   bool   style   匹配   

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.有效的括号

标签:||   相同   push   输入   vector   als   bool   style   匹配   

原文地址:https://www.cnblogs.com/yocichen/p/10271190.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!