H面试程序(7):去掉字符串中重复的数
2013-09-11 20:48
225 查看
之前的答案只能把字符串中不同的数字字符显示出来,现在这个可以把重复的字符从字符串中去掉
之前的答案:
#include<stdio.h> #include<assert.h> #include<memory.h> #include<stdlib.h> //50min void RemoveAllDuplicates(char seq[ ], int n) { assert(seq); int * phash = (int *)malloc( 10*sizeof(int) ); //因为如果是字符串里面的数字 为0~9,只需要映射10个数字到hash的空间存放就行了 memset(phash,0,10*sizeof(int)); int j = 0; for(int i = 0; i <n-1; i++ ) { if( phash[seq[i] -'0'] == 0) //若相应位的hash位置为0,说明未出现过 seq[i] -'0':字符到数字的转化 { phash[seq[i]-'0'] = 1; if(i!=j) //正常情况下,i!=j的情况下就是说明中间有一些数是重复的 seq[j] = seq[i]; j++; // j++后表示里面存放的是下一个没有出现过的数字 } else //若相应位的hash位置为1,说明出现过,i继续向后面扫描,j留在原地等待存放下一个没有出现过的数字 { continue; } } seq[j] = '\0'; //最后一个结束符 } int main() { //char seq[] = { '5','3','3','8','5','6','8','\0'}; char seq[100]; //输入数字字符串 gets(seq); RemoveAllDuplicates(seq, sizeof(seq)/sizeof(char)); //源代码直接写的8,这样写比较好 printf("%s", seq); return 0; }
之前的答案:
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<assert.h> void RemoveAllDuplicates(int seq[], int n) { int *pHash = (int*)malloc(sizeof(int)*n); assert(pHash); //判断申请空间是否成功 memset(pHash,0,sizeof(pHash)*n); //将申请的空间进行初始化 int i; for(i = 0;i < n;++i) { pHash[seq[i]]++; //数组中的数出现一次就在pHash中对应位置加1 if(1 == pHash[seq[i]] ) //若在pHash中只出现一次,则输出,否则跳过,检查下一个数 { printf("%d/t",seq[i]); } } free(pHash); } int main() { int seq[] = { 5,3,4,2,3,2,2,5}; RemoveAllDuplicates(seq, sizeof(seq)/sizeof(int)); //源代码直接写的8,这样写比较好 return 0; }
相关文章推荐
- H面试程序(8):不含重复字母的字符串的全排列
- 假设有一个字符串aabcad,请写一段程序,去掉字符串中不相邻的重复字符串,即上述字符串处理之后的输出结果为:aabcd
- 转:假设有一个字符串aabcad,请编写一段程序,去掉字符串中不相邻的重复字符。
- 一个C#面试问题,要求是将字符串中重复字符从第二个开始都去掉,空格除外。然后显示的时候,从后往前显示。
- java 去掉字符串中的重复数据
- js 字符串类型的数组去掉重复项
- H面试程序(10): 字符串包含问题
- C#练习——去掉字符串两端的空格、统计字符出现的次数及出现的索引位置、随机生成10个1-100之间的不重复的偶数
- 字符串数组(String []) 去掉重复值的方法
- 去掉字符串中重复的字符
- 利用字典key的唯一性查找重复的字符串(去掉重复的字符串也是一样的)
- 华为面试题:请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
- leetcode:Remove Duplicates from Sorted Array II (允许重复一次,去掉数组多余数字)【面试算法题】
- 中软面试(一):java写一个随机生成四位数的程序 每位数字不重复
- C++去掉字符串中重复空格
- 用Java正则去掉字符串中重复出现的字符
- 用Js去掉重复的字符串中的
- JS去掉字符串中的重复数据
- C#去掉数组中重复的字符串
- 亚马逊面试:输出字符串中所有最长的无重复字符的子字符串