#include <stdio.h>
#define MAX_CHARS 256
char * remove_duplicates(char *s){
int hash[MAX_CHARS],i;
char *source, *destination;
if(s == NULL) return NULL;
source = s;
destination = s;
/* Initialize hash */
for(i=0;i<MAX_CHARS; i++) hash[i]=0;
while(*source != '\0'){
/* If this is first time character is encountered */
if(hash[*source] == 0){
hash[*source]++;
*destination = *source;
destination++;
source++;
}
/* We have already processed this character. */
else{
source++;
}
}
/*Imp : Terminate the string */
*destination = '\0';
return s;
}
int main(void) {
// your code goes here
char str[10] = "aaabccc";
printf("%s\n", remove_duplicates
(str
));
char str1[] ="abcdef";
printf("%s\n", remove_duplicates
(str1
));
char str2[] = "";
printf("%s\n", remove_duplicates
(str2
));
if(remove_duplicates(NULL) != NULL){
printf("%s\n", remove_duplicates
(NULL
)); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNkZWZpbmUgTUFYX0NIQVJTIDI1NgoKY2hhciAqIHJlbW92ZV9kdXBsaWNhdGVzKGNoYXIgKnMpewoKICAgICAgICBpbnQgaGFzaFtNQVhfQ0hBUlNdLGk7CiAgICAgICAgY2hhciAqc291cmNlLCAqZGVzdGluYXRpb247CiAgICAgICAgaWYocyA9PSBOVUxMKSByZXR1cm4gTlVMTDsKCiAgICAgICAgc291cmNlID0gczsKICAgICAgICBkZXN0aW5hdGlvbiA9IHM7Ci8qIEluaXRpYWxpemUgaGFzaCAqLwogICAgICAgIGZvcihpPTA7aTxNQVhfQ0hBUlM7IGkrKykgaGFzaFtpXT0wOwoKICAgICAgICB3aGlsZSgqc291cmNlICE9ICdcMCcpewogICAgIC8qIElmIHRoaXMgaXMgZmlyc3QgdGltZSBjaGFyYWN0ZXIgaXMgZW5jb3VudGVyZWQgKi8KICAgICAgICAgICAgICAgIGlmKGhhc2hbKnNvdXJjZV0gPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgIGhhc2hbKnNvdXJjZV0rKzsKICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RpbmF0aW9uID0gKnNvdXJjZTsKICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24rKzsKICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAvKiBXZSBoYXZlIGFscmVhZHkgcHJvY2Vzc2VkIHRoaXMgY2hhcmFjdGVyLiAqLwogICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAvKkltcCA6IFRlcm1pbmF0ZSB0aGUgc3RyaW5nICovCiAgICAgICAgKmRlc3RpbmF0aW9uID0gJ1wwJzsKICAgICAgICByZXR1cm4gczsKfQppbnQgbWFpbih2b2lkKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgljaGFyIHN0clsxMF0gPSAiYWFhYmNjYyI7CglwcmludGYoIiVzXG4iLCByZW1vdmVfZHVwbGljYXRlcyhzdHIpKTsKCQoJY2hhciBzdHIxW10gPSJhYmNkZWYiOwoJcHJpbnRmKCIlc1xuIiwgcmVtb3ZlX2R1cGxpY2F0ZXMoc3RyMSkpOwoJCgljaGFyIHN0cjJbXSA9ICIiOwoJcHJpbnRmKCIlc1xuIiwgcmVtb3ZlX2R1cGxpY2F0ZXMoc3RyMikpOwoJCglpZihyZW1vdmVfZHVwbGljYXRlcyhOVUxMKSAhPSBOVUxMKXsKCXByaW50ZigiJXNcbiIsIHJlbW92ZV9kdXBsaWNhdGVzKE5VTEwpKTsKCX0KCXJldHVybiAwOwp9Cg==