利用了哈希表
这种方法利用了一个大小为256的整数数组作为哈希表,数组的下标表示字符的ASCII码值,数组的值表示该字符是否已经出现过。初始时,数组的所有值都为0。遍历字符串时,对于每个字符,查看对应的数组元素的值。若为0,则将其保存到结果字符串中,并将对应的数组元素修改为1,表示该字符已经出现过。 这种方法的时间复杂度为O(n),其中n为字符串的长度。字母表的大小为确定值256,则空间复杂度也是O(1)。
// // Created by 76518 on 2023/10/31. // #include "stdio.h" #include "string.h" void removeC(char *str) { int length = strlen(str); int charTable[256]={0}; int index = 0; for (int i = 0; i < length; ++i) { if(charTable[(unsigned char)str[i]]==0) { str[index++]= str[i]; charTable[(unsigned char)str[i]]=1; } } str[index]='\0'; } int main() { char str1[101]; gets(str1); removeC(str1); printf("%s",str1); }