思路
- 双栈 一个用于存储字符串 一个用于存储当前栈顶字符串的次数
- 如 letter栈为ddeeefdd 对应的 count栈为 2 3 1 2
- 栈返回的字符进行连接,最后使用reverse()进行字符串反转
代码
class Solution {
public:
string removeDuplicates(string s, int k) {
stack<char> letter;
stack<int> count;
for (char c : s) {
if (!letter.empty() && c == letter.top()) {
count.top()++;
if (count.top() == k) {
for(int j=0;j<k-1;j++)
letter.pop();
count.pop();
}
else {
letter.push(c);
}
}
else {
letter.push(c);
count.push(1);
}
}
string ans;
while (!letter.empty()) {
ans += letter.top();
letter.pop();
}
reverse(ans.begin(),ans.end());
return ans;
}
};