https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/description/

题目与栈的机制十分契合

使用栈实现

string removeDuplicates(string s) {
    stack<char> stk;
    for (char c : s) {
        if (!stk.empty() && stk.top() == c) {
            stk.pop();
        } else {
            stk.push(c);
        }
    }

    // 从栈中取出字符串
    string ans;
    ans.resize(stk.size());
    for (int i = stk.size() - 1; i >= 0; --i) {
        ans[i] = stk.top();
        stk.pop();
    }
    return ans;
}

使用字符串结构模拟栈进行实现,字符串尾模拟栈顶

string removeDuplicates(string s) {
	string ans = "";
	for (char c : s) {
		if (!ans.empty() && ans.back() == c)
			ans.pop_back();
		else
			ans.push_back(c);
	}
	return ans;
}