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);
}
}