004字符串去重 (keep it up)

来源:互联网 发布:网络公关公司良心哥 编辑:程序博客网 时间:2024/06/18 17:52

设计算法并写出代码移除字符串中重复的字符,不能使用额外的缓存空间。注意: 可以使用额外的一个或两个变量,但不允许额外再开一个数组拷贝。

简单题直接上代码:

#include <stdio.h>#include <string.h>void remove_duplicate(char vStr[]){int Len = strlen(vStr);if (!Len) {printf("the string is NULL\n");return ;}    int Count = 0;for (int i=0; i<Len; ++i){if (vStr[i] != '\0'){vStr[Count++] = vStr[i];for (int k=i+1; k<Len; ++k){if (vStr[i] == vStr[k]){vStr[k] = '\0';}}}}vStr[Count] = '\0';}void remove_duplicate2(char vStr[]){int Len = strlen(vStr);if (!Len) {printf("the string is NULL\n");return ;}bool Visited[256];memset(Visited, 0, sizeof(Visited));int Count = 0;for (int i=0; i<Len; ++i){if (!Visited[vStr[i]]){vStr[Count++] = vStr[i];Visited[vStr[i]] = true;}}vStr[Count] = '\0';}void test(){char Str[] = "13434343435568889hhhhhhhfdcvbb";remove_duplicate(Str);printf("%s\n", Str);}

keep it up  每周都写几道算法题,entertainment!

0 0
原创粉丝点击