华为OJ测试题目——删除重复字符

题目标题:

  • 删除重复字符
  • 给定一个字符串,将字符串中所有和前面重复多余的字符删除,其余字符保留,输出处理后的字符串。需要保证字符出现的先后顺序,并且区分大小写。

详细描述:

  • 接口说明

原型:

int GetResult(const char *input, char *output)

输入参数:

input     输入的字符串

输出参数(需考虑指针指向的内存区域是否有效):

output    输出的字符串

返回值:

0         成功

-1        失败及异常

举例:

输入: abadcbad,那么该单词中红色部分的字符在前面已经出现过。

则:输出abdc,返回0。

对于本题,很简单,但是想要一次通过几乎不可能,这就是平时编程习惯的问题了,特别要注意空指针的判断!下面是通过的代码:

int GetResult(const char *input, char *output)
{
	if(input == NULL || output == NULL){
		return -1;
	}
	int hash[1000] = {0};
	int i = 0;
	while(*input != '\0'){
		hash[(*input - '0')]++;
		if(hash[(*input - '0')] == 1){
			output[i++] = *input;
		}
		input++;
	}
	output[i] = '\0';
    return 0;
}
时间: 2024-08-05 06:31:31

华为OJ测试题目——删除重复字符的相关文章

华为OJ平台——首次不重复字符

题目描述: 输入一个字符串,输出字符串中第一个没有重复的字符,若没有满足条件的字符存在,则输出“.” 思路: 这题很简单,直接逐次比较就好了,但是没有考虑到更好效率的方法,以后想到的话再加上来 1 import java.util.Scanner; 2 3 /** 4 * 输入一个字符串,输出字符串中第一个没有重复的字符 5 * 若没有满足条件的字符存在,则输出“.” 6 * 7 */ 8 public class FirstAppearance { 9 10 public static voi

[华为机试练习题]15.删除重复字符/删除重复字符串

题目 题目标题: 删除重复字符 给定一个字符串,将字符串中所有和前面重复多余的字符删除,其余字符保留,输出处理后的字符串.需要保证字符出现的先后顺序,并且区分大小写. 详细描述: 接口说明 原型: int GetResult(const char *input, char *output) 输入参数: input 输入的字符串 输出参数(需考虑指针指向的内存区域是否有效): output 输出的字符串 返回值: 0 成功 -1 失败及异常 举例: 输入: abadcbad,那么该单词中红色部分的

删除重复字符

删除重复字符 给定一个字符串,将字符串中所有和前面重复多余的字符删除,其余字符保留,输出处理后的字符串.需要保证字符出现的先后顺序,并且区分大小写. 详细描述: 接口说明 原型: int GetResult(const char *input, char *output) 输入参数: input     输入的字符串 输出参数(需考虑指针指向的内存区域是否有效): output    输出的字符串 返回值: 0         成功 -1        失败及异常 举例: 输入: abadcba

PTA——删除重复字符

PTA 7-60 删除重复字符 1 #include<stdio.h> 2 #include<string.h> 3 #define N 85 4 5 int main() { 6 int t,i,j,m=0,flag; 7 char original[N],target[N]; 8 gets(original); 9 for(i=0; i<strlen(original); i++) { 10 flag = 0; 11 t = original[i]; 12 //判断字符是

C语言-删除重复字符

//实现对一个字符串的删除重复的字符,并输出删除后的字符串,(如从”testroadeasy”中输出”tesroady”) Action(){    char *str="testroadeasy";    char *desc; desc=(char *)malloc(100*sizeof(char)); fun_delete(str,desc); lr_output_message("%s",desc); return 0;}int fun_delete(cha

华为应聘测试题目——找零钱(递归解决)

找零钱 描述: 我们知道人民币有1.2.5.10.20.50.100这几种面值.现在给你n(1≤n≤250)元,让你计算换 成用上面这些面额表示且总数不超过100张,共有几种.比如4元,能用4张1元.2张1元和1张2元.2张2元, 三种表示方法. 题目类别: 循环 难度: 初级 分数:   运行时间限制: 10 Sec 内存限制: 128 MByte 阶段: 招聘管理 输入: 输入有多组,每组一行,为一个整合n.输入以0结束. 输出: 输出该面额有几种表示方法. 样例输入: 1 4 0 样例输出

2015年华为校招机试题和代码实现(分解字符串,拼音转数字,去除重复字符并排序,等式变换)

再来一套2015年的华为机试题. 第一题(60分): 按要求分解字符串,输入两个数M,N:M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0.例如:输入2,8, "abc" ,"123456789",则输出为"abc00000","12345678","90000000" 分析思路: 容易题 1.获得字符串的长度length后,判断与要输出位数N的大小,大于N的话,直接printf前N位字符,然

C#删除字符串中重复字符的方法

本文实例讲述了C#删除字符串中重复字符的方法.分享给大家供大家参考.具体实现方法如下: 代码如下: #region 删除重复字符 string s = "sdfffffsrlkjesgljfdg03940864e5=_0R9DTGR98YUI\\|||'\\???fdf///"; Response.Write("<br/>String:" + s + "<br/>Result:"); IEnumerable<char

从键盘输入一个字符串,按照字符顺序从小到大进行选择排序,并要求删除重复的字符

/* 从键盘输入一个字符串,按照字符顺序从小到大进行选择排序,并要求删除重复的字符 思路: 选择排序:比较找到最小的下标,和第i个交换位置. 删除重复字符:用k计算不相等的个数,替换. */ #include <stdio.h> #include<string.h> void insetsort(char *str,int n){ int i,j,min,temp,k; char sh[n]; for(i=0;i<n;i++){ min=i; for(j=i+1;j<n