今日学习内容1047. 删除字符串中的所有相邻重复项。今日任务 把1047解决。题目链接力扣1047视频链接https://www.bilibili.com/video/BV12a411P7mw文章目录解题思路一、看题首要反应二、代码实现1.栈模拟解法2.注意点今日心得解题思路直接用字符串模拟栈不用原生 stack更高效简洁。遍历字符串依次读取字符串中的每一个字符。利用栈进行匹配如果栈为空或者当前字符与栈顶字符不相同说明没有形成相邻重复项将当前字符压入栈中。如果当前字符与栈顶字符相同说明找到了一对相邻重复项此时将栈顶字符弹出相当于把这一对重复字符都删除了。构造结果遍历完成后栈中剩下的字符就是最终的结果。一、看题首要反应删除相邻重复项是栈的经典应用题。不用额外开栈直接用字符串当栈用末尾就是栈顶相同就删除不同就尾插。二、代码实现1.栈模拟解法代码如下C版本classSolution{public:stringremoveDuplicates(string s){string res;for(charc:s){if(!res.empty()res.back()c){res.pop_back();}else{res.push_back(c);}}returnres;}};2.注意点用 stack 容器的话写法冗余、效率低。换思路可以直接用字符串模拟栈。原因是本题不需要栈的复杂操作字符串的 back()、pop_back() 完全可以替代栈顶、出栈。原生栈还要逆序拼接容易写错顺序字符串模拟栈直接就是正序结果。改用字符串充当栈直接遍历比对末尾字符省去逆序拼接步骤。今日心得遇到相邻消除类题目优先想到用字符串当栈简洁又高效。栈类题目不一定非要用 stack 容器灵活用字符串、数组模拟栈能简化代码、避开顺序反转的坑。坚持每日一题稳步提升算法能力继续加油