解题:在处理相邻问题的时候可以考虑借助栈的思想方法,因为栈是先入后出的,后入的元素在栈的顶上,所以利用top()函数就能做到“记忆”上一位元素的功能。
代码:
class Solution {
public:
string 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字符串汇总
result += st.top();
st.pop();
}
reverse (result.begin(), result.end()); // 此时字符串需要反转一下
return result;
}
};
查缺补漏:
1)for (char s :S)
2) result += st.pop()