1003. 检查替换后的词是否有效

leetcode-1003. 检查替换后的词是否有效

把前面的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;
}
};