使用栈
#include <stack>using namespace std;class Solution {public:bool isValid(string s) {std::stack<char> strStack;for (auto c : s) {if (c == ')' && !strStack.empty() && strStack.top() == '(') {strStack.pop();continue;} else if (c == ')') {return false;}if (c == ']' && !strStack.empty() && strStack.top() == '[') {strStack.pop();continue;} else if (c == ']') {return false;}if (c == '}' && !strStack.empty() && strStack.top() == '{') {strStack.pop();continue;} else if (c == '}') {return false;}if (c == '(' | c == '[' | c == '{')strStack.push(c);}if (strStack.empty())return true;elsereturn false;}};
结果:
执行结果:
通过
显示详情
添加备注
执行用时:0 ms, 在所有 C++ 提交中击败了100.00% 的用户
内存消耗:6.2 MB, 在所有 C++ 提交中击败了34.22% 的用户
通过测试用例:91 / 91
C语言版本:
bool isValid(char * s){char *stack=(char *)malloc(10000*sizeof(char));int top=0;for (int i=0;s[i]!='\0';++i) {if (top!=0&&((s[i]==')'&&stack[top-1]=='(')||(s[i]==']'&&stack[top-1]=='[')||(s[i]=='}'&&stack[top-1]=='{'))) {top--;}else {stack[top]=s[i];top++;}}if (top!=0) return false;return true;}
leedcode通过:
执行用时:0 ms, 在所有 C 提交中击败了100.00% 的用户内存消耗:6.2 MB, 在所有 C 提交中击败了5.01% 的用户通过测试用例:91 / 91
