本帖最后由 风扫地 于 2019-6-20 09:58 编辑 /*
* 实现2:原地模拟出栈入栈操作(优化循环)
*/
char* removeDuplicates(char * S)
{
int i = 0 ;
int valid_index = 0 ;
while(S[i] != '\0')
{
if(valid_index == 0) /* 边界情况,一定是入栈*/
{
S[valid_index] = S[i] ;
valid_index++ ;
}
else
{
if(S[i] == S[valid_index-1]) /* 碰到情侣就杀死*/
{
valid_index-- ;
S[valid_index] = '\0' ;
}
else /* 碰到单身狗就存好*/
{
S[valid_index] = S[i] ;
valid_index++ ;
}
}
i++;
}
S[valid_index] = '\0';
return S;
}
/*
实现2:
执行用时 :4 ms, 在所有 C 提交中击败了93.25%的用户
内存消耗 :8 MB, 在所有 C 提交中击败了100.00%的用户
*/
|