删除重复字符

来源:互联网 发布:115网盘淘宝暗号 编辑:程序博客网 时间:2024/05/21 21:41

【题】

删除重复字符


背景:

输入一个长度不超过 100 的字符串,删除串中的重复字符。

输入:

输入要检查的字符串,长度不超过100个字符。例如:abacaeedabcdcd。

输出:

删除重复字符后的字符串。例如:abced。

 测试输入关于“测试输入”的帮助期待的输出关于“期待的输出”的帮助时间限制关于“时间限制”的帮助内存限制关于“内存限制”的帮助额外进程关于“{$a} 个额外进程”的帮助测试用例 1以文本方式显示
  1. abacaeedabcdcd↵
以文本方式显示
  1. abced↵
1秒64M0测试用例 2以文本方式显示
  1. 111122233344455577yuyuyu↵
以文本方式显示
  1. 123457yu↵
1秒64M0
【思路】

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;}