【字符串】20. 有效的括号

题目:

解答:

如果是括号的左半边,直接入栈即可;

如果是括号的右半边,需要与栈最上面的括号匹配,匹配失败直接返回false;

for循环遍历结束后,判断栈是否为空,为空则表示所有的括号都已经匹配成功了。

 1 class Solution {
 2 public:
 3      bool isValid(string s) 
 4      {
 5         stack<char> st;
 6         for(int i = 0; i < s.size(); i++)
 7         {
 8             if(s[i] == '(' || s[i] == '[' || s[i] == '{')
 9             {
10                 st.push(s[i]);
11             }
12             else if(s[i] == ')')
13             {
14                 if(!st.empty() && st.top() == '(')
15                 {
16                     st.pop();
17                 }
18                 else
19                 {
20                     return false;
21                 }
22             }
23             else if(s[i] == ']')
24             {
25                 if(!st.empty() &&st.top() == '[')
26                     st.pop();
27                 else
28                     return false;
29             }
30             else if(s[i] == '}')
31             {
32                 if(!st.empty() &&st.top() == '{')
33                     st.pop();
34                 else 
35                     return false;
36             }
37         }
38         if(st.empty())
39             return true;
40         else
41             return false;
42     }
43 };

猜你喜欢

转载自www.cnblogs.com/ocpc/p/12822625.html