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!
版权声明:本文博客原创文章。博客,未经同意,不得转载。
浙公网安备 33010602011771号