给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:就是暴力法遇到“({[” 就添加, 遇到 “)}] ” 就匹配,能匹配就删除最后一位继续不能则结束
class Solution {
public:
bool isValid(string s) {
// 暴力法
string left = "({[";
string right = ")}]";
// 存放 左边括号
string res = "";
// 遍历
for (auto sN : s) {
// cout << res << endl;
string tmp(1, sN);
if (left.find(sN) != string::npos) {
res.push_back(sN);
} else {
// 右括号
if (res.empty()) {
return false;
}
if (sN == ')' && res.back() == '(') {
res.pop_back();
} else if (sN == '}' && res.back() == '{') {
res.pop_back();
} else if (sN == ']' && res.back() == '[') {
res.pop_back();
} else {
return false;
}
}
}
if (res.empty()) {
return true;
} else {
return false;
}
}
};