#include <stdio.h>
typedef struct tagFilterChar
{
int ch;
int n;
}FilterChar;
void insert_sort(FilterChar* arr,int n)
{
int i,j;
FilterChar temp = {0};
for(i = 1;i < n; i++)
{
temp = *(arr + i);
for(j = i; j > 0 && (arr + j - 1)->n > temp.n; j--)
{
*(arr + j) = *(arr + j - 1);
}
*(arr + j) = temp;
}
}
void filterchar(const char* src, char* dst)
{
const char* p = NULL;
int ch = 0;
FilterChar flag[0xff] = {0};
int i = 0;
int num = 0;
if (src == NULL || dst == NULL)
return ;
p = src;
while (ch = *p++)
{
if (!flag[ch].ch)
{
flag[ch].ch = ch;
flag[ch].n = num++;
}
}
insert_sort(flag,0xff);
for (i = 0; i < 0xff; ++i)
{
if (flag[i].ch)
*dst++ = flag[i].ch;
}
*dst = 0;
}
int main(void)
{
int n = 0;
char arr[100];
filterchar("..,dcbadcba,",arr);
puts(arr);
return 0;
}
字符过滤【二】有顺序的过滤重复字符
最新推荐文章于 2021-09-14 18:40:02 发布