只需遍历字符串一次,时间复杂度为O(n)。
代码如下:
void erase_repeat_char(char *s)
{
assert(s != NULL);
char chartable[256] = {0};
string str(s);
int i = 0;
while(i < str.length())
{
if(chartable[str[i]] != 0)//删除重复字符
{
str.erase(i,1);
}
else
{
chartable[str[i]] = 1;//记录此字符已经出现
i++;
}
}
strcpy(s,str.c_str());
}