/* delete adjacent chars from a string, very simple(references from others)*/
char *DeleteAdjacent(char *str)
{
assert(str != NULL);
int len = strlen(str);
for (int i = 1, j = 0; i < len; i++)
{
if (str[i] != str[j])
{
str[++j] = str[i];
}
}
str[++j] = '/0';
return str;
}
/* my implemention, more complex*/
char *DeleteAdjacent1(char *str)
{
assert(str != NULL);
int len = strlen(str);
char *dest = new char[len];
for (int i = 0, j = 0; i < len; i++)
{
if (str[i] != str[i + 1])
{
dest[j++] = str[i];
}
}
memcpy(str, dest, len);
str[j] = '/0';
delete []dest;
return str;
}
/* another implemention using pointers */
char *DeleteAdjacent2(char *str)
{
assert(str != NULL);
char *p = str;
char *q = str + 1;
for (; *q != '/0'; q++)
{
if (*p != *q)
{
*(++p) = *q;
}
}
*(p + 1) = '/0';
return str;
}