括号匹配相邻的括号左括号右括号匹配,做一个消除的动作,或者做一个匹配的动作。这题是如果相邻的字母相同做一个消除的一个动作。这种消除规则下用栈很合适。
从栈中弹出剩余元素,此时是字符串ac,因为从栈里弹出的元素是倒序的,所以再对字符串进行反转一下,就得到了最终的结果。
class Solution{
public removeDuplicates(string S)
{
stack<char> st;
for(char s:S)
{
if(st.empty() || s!=st.top())
{
st.push(s);
}else
{
st.pop(); //s与st.top()相等的情况
}
}
string result ="";
while(!st.empty())
{
result +=st.top();
st.pop();
}
reverse(result.begin(),result.end());
return result;
}
};