【题】
删除重复字符
背景:
输入一个长度不超过 100 的字符串,删除串中的重复字符。
输入:
输入要检查的字符串,长度不超过100个字符。例如:abacaeedabcdcd。
输出:
删除重复字符后的字符串。例如:abced。
测试输入 | 期待的输出 | 时间限制 | 内存限制 | 额外进程 | |
---|---|---|---|---|---|
测试用例 1 | 以文本方式显示
| 以文本方式显示
| 1秒 | 64M | 0 |
测试用例 2 | 以文本方式显示
| 以文本方式显示
| 1秒 | 64M | 0 |
【思路】
1、先申明一个长度为100的字符数组char str_src[100],用来保持输入的字符串。
然后申明另一个字符数组 char str_res[100] ,用来保持str_src中不重复的字符。(可以看出,这里并不是题目上所说的“删除”,而是用另一个数组存储不重复的字符。)
2、具体操作:
逐个扫描str_src中的字符,针对str_src[i],则检查str_res中是否存在str_src[i]。如果不存在,则把str_src[i]添加到str_res中;否则不添加。
例如:测试用例1中,str_src为“
abacaeedabcdcd”,初始时,str_res中没有字符。
从i=0开始,str_src[i] = 'a',检查str_res,发现其中没有字符'a',则将'a'添加到str_res中。
i++;
这时,i=1,str_src[i] = 'b',检查str_res,发现其中没有字符'b',则将'b'添加到str_res中。
i++;
这时,i=2,
str_src[i] = 'a',检查str_res,发现其中存在字符'a',则不添加。
i++;
。。。。。。
一直到str_src末尾。
【代码】
#include "stdio.h"
#include "string.h"
int main(int argc, char **argv)
{
char arr_src[100] = {'\0'};
char arr_res[100] = {'\0'};
gets(arr_src);
int length_src = strlen(arr_src);
int length_res = strlen(arr_res);
int i, j;
for(i = 0; i < length_src; i++)
{
length_res = strlen(arr_res);
for (j = 0; j < length_res; j++)
{
if (arr_res[j] == arr_src[i])
break;
}
if (j == length_res)
{
arr_res[j] = arr_src[i];
}
}
puts(arr_res);
return 0;
}