首页 > 代码库 > 004字符串去重 (keep it up)
004字符串去重 (keep it up)
设计算法并写出代码移除字符串中重复的字符,不能使用额外的缓存空间。注意: 可以使用额外的一个或两个变量,但不允许额外再开一个数组拷贝。
简单题直接上代码:
#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!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。