leetcode20.有效的括号

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

有效字符串需满足:

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

示例:

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


分析:

1
栈的经典应用

代码

  • C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
const int N = 10010;

class Solution {
public:
bool isValid(string s) {
unordered_map<char, char> umap{
{')', '('},
{'}', '{'},
{']', '['}
};
char skt[N];
int tt = 0;
for (int i = 0;i < s.size();i ++) {
if (s[i] == '(' || s[i] == '{' || s[i] == '[')
skt[ ++ tt] = s[i];
else {
if (tt && skt[tt] == umap[s[i]]) tt --;
else return false;
}
}

return tt == 0;
}
};

[原题链接](20. 有效的括号 - 力扣(Leetcode))

0%