标签:
设计算法并写出代码移除字符串中反复的字符,不能使用额外的缓存空间。
注意: 能够使用额外的一个或两个变量,但不同意额外再开一个数组拷贝。
简单题直接上代码:
#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); }
版权声明:本文博客原创文章。博客,未经同意,不得转载。
标签:
原文地址:http://www.cnblogs.com/lcchuguo/p/4713152.html