设计一个算法移除字符串中的重复字符,并写出测试用例。

设计一个算法移除字符串中的重复字符,并写出测试用例。

解决思想: 1:对于每个字符,检查在一发现字符集合中是否已经存在。

     2:若存在,则跳过,否则加入到已发现字符集合中。

 1 #include<iostream>
 2 
 3 void removeDuplicates(char *str)
 4 {
 5     if(str==NULL)
 6         return;
 7     int len=strlen(str);
 8     if(len<2)
 9         return;
10     int tail=1;
11     for(int i=1;i<len;++i)
12     {
13         int j;
14         for(j=0;j<tail;++j)
15         {
16             if(str[i]==str[j])
17                 break;
18         }
19         if(j==tail)
20         {
21             str[tail]=str[i];
22             ++tail;
23         }
24     }
25     str[tail]=0;
26     printf("%s\n",str);
27 }
28 
29 int main()
30 {
31     char mystr[]="abababa";
32     removeDuplicates(mystr);
33     return 0;
34 }

测试用例:1:不含有重复字符的字符串,如“abcd”;

     2:  含单一字符的字符串,如“aaaa”;

     3: 空字符与空指针,如“”与NULL;

     4:多个连续的字符串,如“aaabbb”;

     5: 不连续重复的字符串,如“abababa”;

时间复杂度为O(n2);

posted @ 2018-09-09 20:07  浪里飞  阅读(994)  评论(0编辑  收藏  举报