leetcode解题报告20. Valid Parentheses
难度是easy
题目描述
给一条由“(){}[]”这6种字符组成的字符串,判断其是否合法,即一个左括号必须和其后面第一个右括号是同类型的。
我的思路
题目比较简单,难点在于想到用stack的后进先出的技巧来完成括号的配对。
我的代码
class Solution {
public:
bool isValid(string s) {
const int max_size = s.size();
char stack[max_size];
int pos = 0;
for (int i = 0; i < max_size; i++) {
if (s[i]=='(' || s[i]=='[' || s[i]=='{') {
stack[pos] = s[i];
pos++;
continue;
}
if (s[i]==')') {
if (pos>0 && stack[pos-1]=='(') {
pos--;
continue;
} else {
return false;
}
}
if (s[i]==']') {
if (pos>0 && stack[pos-1]=='[') {
pos--;
continue;
} else {
return false;
}
}
if (s[i]=='}') {
if (pos>0 && stack[pos-1]=='{') {
pos--;
continue;
} else {
return false;
}
}
}
return pos == 0;
}
};
阅读官方题解
没有官方题解。
思想核心总结
数据结构是算法的基础,适合的数据结构能让求解问题变简单