解题思路
- 删除的是重复的项,故只需考虑栈顶和即将入栈的元素是否重复
- 利用数组对栈元素进行拷贝和删除
提示
- 在栈为空时,舍去比较的过程,直接将元素压入栈内
部分代码
char * removeDuplicates(char * S)
{
int top = -1;
for(int p=0; p<strlen(S); p++)
{
if(top==-1 || S[top]!=S[p]) //若栈空或不相等,将值压入栈内
{
top++;
S[top]=S[p];
}
else if(S[top]==S[p]) //若相等,则不进行赋值
{
top--;
}
}
S[top+1] ='\0'; //数组的结束标志
return S;
}