一、今日学习任务第19天 栈经典应用——字符串相邻去重1. 删除字符串中的所有相邻重复项题目建议本题是栈爱消除类经典入门题完美体现栈记录遍历当前元素前一个元素的特性。每次遍历字符都可以和栈顶做对比相同则抵消弹出不同则入栈。思路简单但非常经典能深刻理解栈在匹配、消除类题型的底层作用。题目链接https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/视频讲解https://www.bilibili.com/video/BV12a411P7mw二、初次解题思路和思考拿到题目第一想法是双重循环每次查找相邻相同字符找到就删除反复循环直到没有相邻重复。这种暴力做法缺陷非常明显1. 多次遍历字符串时间效率极低容易超时2. 每次删除字符后字符串长度变化下标容易错乱边界极难控制3. 只能处理简单两两相邻无法链式连环消除代码繁琐且不优雅。转换思路结合栈特性分析栈的核心作用就是缓存上一个遍历的元素遍历到当前字符时直接和栈顶对比。核心优化思路逐个遍历字符串字符当前字符和栈顶元素相等则代表相邻重复栈顶出栈消除不相等就把当前字符压入栈中。遍历完成后栈中剩余字符就是消除所有相邻重复后的最终结果。三、写代码时核心注意点1. 栈为空特殊判断栈空时没有栈顶元素直接将当前字符入栈即可不能取栈顶做比较。2. 相邻重复判断逻辑遍历字符与栈顶相同出栈抵消不同入栈保留。3. 链式自动消除栈天然支持连环消除例如 abbaa入、b入、下一个b和栈顶b相同弹出、再下一个a和栈顶a相同弹出自动完成整体消除无需额外循环。4. 结果拼接最后把栈中字符依次取出拼接成最终字符串返回即可。四、操作测试示例输入s abbaca输出ca解释bb消除、aa消除最终剩下ca栈自动完成逐层相邻抵消。输入s abba输出解释两两相邻连环消除最后栈为空。五、今天收获1. 理解栈适合相邻匹配、相邻消除类题型的根本原因栈能随时记录上一个元素2. 掌握本题标准栈解题模板形成字符遍历栈顶对比的固定思维3. 学会处理栈空边界判断避免取栈顶导致程序报错4. 体会栈天然支持链式连环消除的特性比暴力删除简洁高效太多5. 进一步夯实栈基础操作 push、pop、top、empty为后续150逆波兰表达式等栈难题打好基础。