字符串去重

来源:互联网 发布:linux多进程编程实例 编辑:程序博客网 时间:2024/04/19 19:14

这个算法并不是最优的。但是在内存空间充足时效率是最高的。

eg:

        input: str = "aabbccassbsc";

        output: str = "abcs";

思路:1.创建一个hashmap 因为都是ASCII的字符 就简单使用 char hash[100]来用即可。

            2.再创建一个够大的字符串备份。str_bakup 把去重的结果放到此数组中。

            3.最后cpy。

            遍历次数:2n; 空间复杂度:2*SIZE+100;

void str_distinct(char * str){char hash[100] = {0};  //标记已存在的 hashmapint len = strlen(str);  char str_bakup[60];    //备份的字符串int cnt = 0;for(int i = 0; i < len; i++) {if( !hash[*(str+i)-'a'] ) {hash[*(str+i)-'a'] = 1;*(str_bakup+cnt++) = *(str+i);}}*(str_bakup+cnt) = '\0';strcpy(str, str_bakup);}


 

原创粉丝点击