[力扣] 算法 1047 (C#)

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

Plan A (这会超时是我万万没有想到的)

public class Solution
{
    public string RemoveDuplicates(string S)
    {
        var deque = new LinkedList<char>();
        foreach(var ch in S)
        {
            if(deque.Count > 0)
            {
                if (deque.Last() == ch) { 
                    deque.RemoveLast();
                    continue;
                }
            }
            deque.AddLast(ch);
        }
        return string.Concat(deque);
    }
}

Plan B

public class Solution
{
    public string RemoveDuplicates(string S)
    {
        var chs = new char[S.Length];
        var leng = 0;
        foreach(var ch in S)
        {
            if (leng > 0 && chs[leng - 1] == ch)
                leng--;
            else
                chs[leng++] = ch;
        }
        return new string(chs, 0, leng);
    }
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据