Leetcode 1209. 删除字符串中的所有相邻重复项 II(牛逼,终于过了)
Published on 2022-06-23 11:10 in 暂未分类 with 萧海~

Leetcode 1209. 删除字符串中的所有相邻重复项 II(牛逼,终于过了)

    在这里插入图片描述
    给你一个字符串 s,「k 倍重复项删除操作」将会从 s 中选择 k 个相邻且相等的字母,并删除它们,使被删去的字符串的左侧和右侧连在一起。

    你需要对 s 重复进行无限次这样的删除操作,直到无法继续为止。

    在执行完所有删除操作后,返回最终得到的字符串。

    本题答案保证唯一。

    示例 1:

    输入:s = "abcd", k = 2
    输出:"abcd"
    解释:没有要删除的内容。

    示例 2:

    输入:s = "deeedbbcccbdaa", k = 3
    输出:"aa"
    解释:
    先删除 "eee""ccc",得到 "ddbbbdaa"
    再删除 "bbb",得到 "dddaa"
    最后删除 "ddd",得到 "aa"

    示例 3:

    输入:s = "pbbcggttciiippooaais", k = 2
    输出:"ps"

    提示:

    • 1 <= s.length <= 10^5
    • 2 <= k <= 10^4
    • s 中只含有小写英文字母。

    Code:

    class Solution {
    public:
    string removeDuplicates(string s, int k) {
    string res;
    int size=s.length();
    int num=0;
    for(int i=0;i<size;i++)
    {
    if(res.back()!=s[i])
    {
    res.push_back(s[i]);
    num=1;
    continue;
    }
    else
    {
    num++;
    res.push_back(s[i]);
    if(num==k)
    {
    for(int j=0;j<k;j++)
    {
    res.pop_back();
    }
    num=1;
    for(int j=res.size()-1;j>=0;j--)
    {
    if((j-1)>=0)
    {
    if(res[j]==res[j-1])
    num++;
    else
    break;
    }
    }
    }
    }
    }
    return res;
    }
    };
    posted @   萧海~  阅读(51)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · 全程不用写代码,我用AI程序员写了一个飞机大战
    · DeepSeek 开源周回顾「GitHub 热点速览」
    · 记一次.NET内存居高不下排查解决与启示
    · 物流快递公司核心技术能力-地址解析分单基础技术分享
    · .NET10 - 预览版1新功能体验(一)
    点击右上角即可分享
    微信分享提示
    电磁波切换