C++ ①左括号入栈(if else)
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
bool isValid(string s) {
// write code here
stack<char> a;
if (s.size()%2) return false;
else {
for (int i=0; i<s.size(); ++i) {
char b = s[i];
if (b=='[' || b=='(' || b=='{') {
a.push(b); //左括号入栈
}
else {
if (a.empty()) return false;
char c = a.top();
if (b==']' && c=='[') a.pop();
else if (b==')' && c=='(') a.pop();
else if (b=='}' && c=='{') a.pop();
else return false;
}
}
}
if (a.empty()) return true;
else return false;
}
};
②右括号入栈(case)
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
bool isValid(string s) {
// write code here
stack<char> a;
if (s.size()%2) return false;
else {
for (int i=0; i<s.size(); ++i) {
switch (s[i]) {
case '[': a.push(']'); break; // 可以没{},但是一定要break
case '(': a.push(')'); break;
case '{': a.push('}'); break;
default: // case 后面只能判断常量 const变量也不行
if (a.size() && (a.top()==s[i])) a.pop();
else return false;
break;
}
}
}
if (a.empty()) return true;
else return false;
}
};



京公网安备 11010502036488号