前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Leetcode 2021 刷题计划] 1047. 删除字符串中的所有相邻重复项

[Leetcode 2021 刷题计划] 1047. 删除字符串中的所有相邻重复项

原创
作者头像
windism
修改2021-03-09 17:55:21
2K0
修改2021-03-09 17:55:21
举报
文章被收录于专栏:风扬

每日一题时间: 2020-03-09 题目链接: 1047. 删除字符串中的所有相邻重复项 官方题解链接: 删除字符串中的所有相邻重复项

题目

给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。

S 上反复执行重复项删除操作,直到无法继续删除。

在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

代码语言:txt
复制
示例:
输入:"abbaca"
输出:"ca"
解释:
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。

提示:

  • 1 <= S.length <= 20000
  • S 仅由小写英文字母组成。

解题方法

本题属于EASY, 其实主要考察的是对于栈的应用。

暴力法

提供暴力法代码, 该部分是后补的, 在力扣也是可以AC的。

代码语言:txt
复制
class Solution {
public:
    string removeDuplicates(string S) {
        string cur = "";
        while (true) {
            int index = 0;
            while (index < S.size() - 1) {
                if (S[index] == S[index + 1]) {
                    ++index;
                } else {
                    cur.push_back(S[index]);
                }
                ++index;
            }
            if (index < S.size()) cur.push_back(S[index]);
            if (cur.size() < 2 || cur == S) {
                break;
            } else {
                S = cur;
                cur = "";
            }
        }
        return cur;
    }
};
  • 复杂度分析
    • 时间复杂度:O(N^2)
      • 例如: abccba
    • 空间复杂度: O(N)

C++ 中利用 string 模拟 stack, 可以减少 stackstring 的转化。

代码语言:txt
复制
class Solution {
public:
    string removeDuplicates(string S) {
        string res;
        for (auto & c: S) {
            if(!res.empty() && res.back() == c) {
                res.pop_back();
            } else {
                res.push_back(c);
            }
        }
        return res;
    }
};
  • 复杂度分析
    • 时间复杂度:O(N)
    • 空间复杂度: O(1)

参考资料

  1. 1047. 删除字符串中的所有相邻重复项
  2. 删除字符串中的所有相邻重复项

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 解题方法
    • 暴力法
      • 参考资料
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档