标签:++ 字符 ali inf 循环 empty ret strong 括号
题目:
解答:
如果是括号的左半边,直接入栈即可;
如果是括号的右半边,需要与栈最上面的括号匹配,匹配失败直接返回false;
for循环遍历结束后,判断栈是否为空,为空则表示所有的括号都已经匹配成功了。
1 class Solution { 2 public: 3 bool isValid(string s) 4 { 5 stack<char> st; 6 for(int i = 0; i < s.size(); i++) 7 { 8 if(s[i] == ‘(‘ || s[i] == ‘[‘ || s[i] == ‘{‘) 9 { 10 st.push(s[i]); 11 } 12 else if(s[i] == ‘)‘) 13 { 14 if(!st.empty() && st.top() == ‘(‘) 15 { 16 st.pop(); 17 } 18 else 19 { 20 return false; 21 } 22 } 23 else if(s[i] == ‘]‘) 24 { 25 if(!st.empty() &&st.top() == ‘[‘) 26 st.pop(); 27 else 28 return false; 29 } 30 else if(s[i] == ‘}‘) 31 { 32 if(!st.empty() &&st.top() == ‘{‘) 33 st.pop(); 34 else 35 return false; 36 } 37 } 38 if(st.empty()) 39 return true; 40 else 41 return false; 42 } 43 };
标签:++ 字符 ali inf 循环 empty ret strong 括号
原文地址:https://www.cnblogs.com/ocpc/p/12822625.html