BM44. 有效括号序列
描述
示例1
输入:
"()[]{}"
输出:
true
示例2
输入:
"[]"
输出:
true
示例3
输入:
"([)]"
输出:
false
C++ 解法, 执行用时: 2ms, 内存消耗: 320KB, 提交时间: 2021-05-27
class Solution { public: /** * * @param s string字符串 * @return bool布尔型 */ bool isValid(string s) { // write code here stack<char> st; int n = s.size(); for(int i=0;i<n;i++){ if(!st.empty() && ((s[i] == ']' && st.top()=='[') || (s[i] == '}' && st.top()=='{')|| (s[i] == ')' && st.top()=='('))) st.pop(); else st.push(s[i]); } return st.empty(); } };
C++ 解法, 执行用时: 2ms, 内存消耗: 324KB, 提交时间: 2021-03-03
#include<stack> class Solution { public: /** * * @param s string字符串 * @return bool布尔型 */ bool isValid(string s) { // write code here stack<int> stk; int flag=true; for (int i=0; i<s.length(); ++i){ if (s[i] == '('){ stk.push(0); } if (s[i] == '['){ stk.push(1); } if (s[i] == '{'){ stk.push(2); } if (s[i] == ')'){ if (!stk.empty() && stk.top() == 0){ stk.pop(); } else{ flag = false; break; } } if (s[i] == ']'){ if (!stk.empty() && stk.top() == 1){ stk.pop(); } else{ flag = false; break; } } if (s[i] == '}'){ if (!stk.empty() && stk.top() == 2){ stk.pop(); } else{ flag = false; break; } } } if (!stk.empty()){ flag = false; } return flag; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 328KB, 提交时间: 2021-05-20
class Solution { public: /** * * @param s string字符串 * @return bool布尔型 */ bool isValid(string s) { // write code here stack<char> st; auto f = [](char a, char b) { if (a=='('&&b==')' || a=='['&&b==']' || a=='{'&&b=='}') { return true; } return false; }; for (int i = 0; i < s.size(); i++) { if (s[i] == '(' || s[i] == '[' || s[i] == '{') { st.push(s[i]); } else { if (st.empty() || !f(st.top(),s[i])) { return false; } else { st.pop(); } } } if (st.empty()) return true; else return false; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 328KB, 提交时间: 2021-04-25
class Solution { public: /** * * @param s string字符串 * @return bool布尔型 */ bool isValid(string s) { stack<char> st; for(int i=0;i<s.size();i++) { if(s[i]=='('||s[i]=='{'||s[i]=='[') {if(s[i]=='(') s[i]=')'; else if(s[i]=='{') s[i]='}'; else s[i]=']'; st.push(s[i]); } else { if(st.size()==0) return false; if(st.top()!=s[i]) return false; st.pop(); } } if(st.size()!=0) return false; return true; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 328KB, 提交时间: 2021-04-12
class Solution { public: /** * * @param s string字符串 * @return bool布尔型 */ bool isValid(string s) { stack<char>stk; for(int i=0;i<s.size();++i) { switch(s[i]) { case '(': stk.push(s[i]); break; case '[': stk.push(s[i]); break; case '{': stk.push(s[i]); break; case ')': if(stk.empty()||stk.top()!='(') return false; stk.pop(); break; case ']': if(stk.empty()||stk.top()!='[') return false; stk.pop(); break; case '}': if(stk.empty()||stk.top()!='{') return false; stk.pop(); break; } } return stk.empty()?true:false; } };