image-20241108030629168

思路

经过第239题的洗礼,这道题似乎变得轻而易举,我们直接用一个栈来实现,依次把每个数扔进去,当下一个数与这个数一样的时候,直接top–,并且不输入到栈中,不一样的时候,丢入栈中

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
char* removeDuplicates(char* s) {
int len = strlen(s);
char* stack = (char*)malloc(2 * len + 1);
int top = 0;

for (int i = 0; i < len; i++) {
if (top > 0 && stack[top - 1] == s[i]) {
top--;
} else {
stack[top++] = s[i];
}
}

stack[top] = '\0';
return stack;
}