把前面的a、b都存在一个栈里面,如果找到c,就用c收回前面的ab。
发生两种情况之一即可认为词无效:
- 字符串遍历完,栈中仍然有剩余的字符。
- C没有收回ab(这一定会导致c留在栈内,因为没有任何字符可以收回c)
出栈的时候要注意,栈是不是空栈。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| class Solution { public: bool isValid(string s) { stack<char> st; for(char ch : s) { if(ch == 'c') { if(!st.empty() && st.top() == 'b') { st.pop(); if(!st.empty() && st.top() == 'a') { st.pop(); continue; } else return false; } } st.push(ch); } if(st.empty()) return true; else return false; } };
|