![40b8438f3750c6b3eb8793f5eba81b78.gif](https://i-blog.csdnimg.cn/blog_migrate/45f08a87bdd90a1491521fd01aec9a83.gif)
? 今日习题
给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。
在 S 上反复执行重复项删除操作,直到无法继续删除。
在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。
示例:
输入:"abbaca"
输出:"ca"
解释:
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。
1<= S.length <= 20000
S 仅由小写英文字母组成。
![b22f8ff0abea9cb81cd8ebf0fbc845a2.png](https://i-blog.csdnimg.cn/blog_migrate/e8fcb55596d7c30b98964b15c8ad85d3.png)
……⏰ 思考时间……
如果你想好答案了
请查看解题思路和代码实现
▼
·解题思路·
首先创建一个空的字符串 res,然后对形参进行依次循环。
如果 res 中的最后一个字符与参数中循环到的字符相等,则去掉该字符,否则添加字符。
时间复杂度:O(n)
空间复杂度:O(n)
·代码实现·
class Solution {public:string removeDuplicates(string S) {string res = "";for(char c: S)if(res.size() && res.back() == c) res.pop_back();else res += c;return res; }};
微信关注“字节408考研”,
免费获取各院校计算机软件考研信息与专业课资料!
![15fc3839bbd13d3fe9fbf4fb409033ee.png](https://i-blog.csdnimg.cn/blog_migrate/f2ed5b076e7430019cbb90cc40f52e15.png)
在看不好意思,那就点个赞或者广告吧
![f437eef5686061d60d7ce1ff587fb684.gif](https://i-blog.csdnimg.cn/blog_migrate/0c9e1aaa4c247d386c59d0df14b50fc1.gif)