1.删除指定字符
该方法是《The C programming language》中的一个例子,写的很巧妙,原地删除,没有多用额外的存储空间。
void squeeze(char *s , int c)
{
int i , j;
for(i = j = 0 ; s[i] ; i++)
{
if(s[i] != c)
s[j++] = s[i];
}
s[j] = '\0';
}
2.删除相邻相同的字符
例如:abbc -> ac
abccbdeffeg -> adg
考虑可以采用1中的思想
void squeeze(char *s)
{
int i , j , c , len; //c为当前也许要插入的字符
c = s[0]; len = strlen(s);
for(i = 1 , j = 0 ; i <= len; i++)
{
if(s[i] == c)
{
c = j > 0 ? s[--j] : s[++i];
}
else
{
s[j++] = c ;
c = s[i] ;
}
}
s[j] = c;
}