Leetcode 第20题 有效的括号
题目描述:
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: “()”
输出: true
示例 2:
输入: “()[]{}”
输出: true
示例 3:
输入: “(]”
输出: false
示例 4:
输入: “([)]”
输出: false
示例 5:
输入: “{[]}”
输出: true
通过的时间:
写题思路
- 当我拿到这道题时,我首先想到使用栈的后进先出的思想,只要括号匹配成功,例如:“()”,就将其弹出。
- 使用c++中的vector,可以更方便的使用栈的思想解题
具体实现的代码如下:
#include "iostream"
#include "vector"
using namespace std;
class Solution {
public:
bool isValid(string s) {
if (s == "") {
return true;
} else {
vector<char> str;
str.push_back('#');
for (int i=0; i<s.length(); i++) {
if ((str[str.size()-1] == '(' && s[i] == ')') ||
(str[str.size()-1] == '{' && s[i] == '}') ||
(str[str.size()-1] == '[' && s[i] == ']')) {
str.pop_back();
} else {
str.push_back(s[i]);
}
}
if (str.size() == 1) {
return true;
} else {
return false;
}
}
}
};
int main() {
string str;
cin>>str;
Solution *solution = new Solution();
cout<<solution->isValid(str);
return 0;
}