题目:
解答:
依次遍历S中的每个字符,如果当前字符为c,判断栈顶两个字符是不是b和a,如果是,两次退栈, 否则可直接判断S不是有效的字符串, 当前前提是先判断栈中元素个数是不是大于2,如果不是,直接判断无效。如果是 字符a 和b直接入栈。
1 class Solution { 2 public: 3 bool isValid(string S) 4 { 5 stack<char> st; 6 for(char ch:S) 7 { 8 if(ch!=‘c‘) 9 { 10 st.push(ch); 11 } 12 else 13 { 14 if(st.size()<2) 15 { 16 return false; 17 } 18 char ch1,ch2; 19 ch1=st.top(); 20 st.pop(); 21 ch2=st.top(); 22 st.pop(); 23 if(ch1!=‘b‘||ch2!=‘a‘) 24 { 25 return false; 26 } 27 } 28 } 29 if(st.empty()) 30 { 31 return true; 32 } 33 return false; 34 } 35 };
原文:https://www.cnblogs.com/ocpc/p/12826214.html