题目
题目标题:
删除重复字符
给定一个字符串,将字符串中所有和前面重复多余的字符删除,其余字符保留,输出处理后的字符串。需要保证字符出现的先后顺序,并且区分大小写。
详细描述:
接口说明
原型:
int GetResult(const char *input, char *output)
输入参数:
input 输入的字符串
输出参数(需考虑指针指向的内存区域是否有效):
output 输出的字符串
返回值:
0 成功
-1 失败及异常
举例:
输入: abadcbad,那么该单词中红色部分的字符在前面已经出现过。
则:输出abdc,返回0。
知识点:
工程环境请使用VS2005
题目来源: 软件训练营
维护人: d00191780
练习阶段: 初级
代码
/*---------------------------------------
* 日期:2015-06-30
* 作者:SJF0115
* 题目:删除重复字符/删除重复字符串
* 来源:华为上机
-----------------------------------------*/
#include <stdio.h>
#include <string.h>
/*
Description
给定一个字符串,将字符串中所有和前面重复多余的字符删除,其余字符保留,输出处理后的字符串。需要保证字符出现的先后顺序。
Prototype
int GetResult(const char *input, char *output)
Input Param
input 输入的字符串
Output Param
output 输出的字符串
Return Value
0 成功
-1 失败及异常
*/
int GetResult(const char *input, char *output)
{
if(input == NULL || output == NULL){
return -1;
}//if
int size = strlen(input);
// 统计字符出现个数
int hash[256] = {0};
int index = 0;
for(int i = 0;i < size;++i){
// 判断之前是否出现过
if(hash[input[i]] == 0){
output[index++] = input[i];
}//if
++hash[input[i]];
}//for
output[index] = '\0';
return 0;
}