华为:输入一个字符串,删除重复前面的字符,其余字符按原样顺序输出
2013-04-16 20:37
465 查看
/* * 输入一个字符串,删除重复前面的字符,其余字符按原样顺序输出. * 例如: * 输入:input: "acbdfdffZZet"; * 输出:output:"acbdfZet"; * 实现函数:String(String input) */ //你理解错题意了,你的做法是只保留出现一次的字符 //我想说的是,这道题目有歧义,删除重复前边 的字符,前边只的是什么恶? #include<iostream> #include<cstdio> #include<assert.h> #include<cstring> using namespace std; const int N=256; char hash ={0}; void stringFilter(char *pInputStr) { assert(pInputStr!=NULL); const char *p=pInputStr; int n=strlen(pInputStr); char *pOutputStr=new char[n+1]; if(pOutputStr==NULL) { cout<<"error!"<<endl; return ; } while(*p!='\0') { hash[*p]++; p++; } p=pInputStr; char *pOut=pOutputStr; while(*p!='\0')//重大错误,因为上一个循环已经把*pInputSt遍历到'\0' { if(hash[*p]>=1) { hash[*p]=0; *pOut++=*p++; } else { p++; } } *pOut='\0'; strcpy(pInputStr,pOutputStr); delete [] pOutputStr; } void delString(char *input) { assert(NULL!=input); const int max=256; int i=0,j=0; char hash[max]={0}; char *p=input; while(*p) { hash[*p]++; p++; } while(*input) { if(hash[*input]>=1) { input[j++]=input[i++];//快慢指针 hash[*input]=0;//这相还是相当于字符串去重,出现过一次以后就不在处理本字符 } else { i++; } input++; } *input='\0'; } int main() { char a[]="acbdfdffZZet"; cout<<"a= "<<a<<endl; stringFilter(a); cout<<"after stringFilter(a) a= "<<a<<endl; return 0; }
相关文章推荐
- 转:从键盘输入一个字符串,按照字符顺序从小到大进行排序,并要求删除重复的的字符。
- 从键盘输入一个字符串,按照字符顺序从小到大进行排序,并要求删除重复的的字符。
- 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。
- 写一个控制台应用程序,它接收用户输入的字符串,将其中的字符顺序,反顺序输出!
- 不同的取法输出顺序可以不考虑。取字符( 从标准输入读入一个由字母构成的串(不大于30个字符)。从该串中取出3个不重复的字符,求所有的取法。取出的字符,要求按字母升序排列成一个串。)
- C语言 字符串 编一个程序,输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。
- ACM 4描述 输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。输入 第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,
- 输入一个字符串: 例如:输入为:“*****A*B**C**DE**F****” 删除字符中间的*,即输出为*****ABCDEF****
- 华为上机笔试之通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 压缩规则: 1、仅压缩连续重复出现的字符。比如字符串"abcbc
- 给定一个只包含小写字母的字符串,删除重复的字母,每个字母只出现一次。在所有结果中,输出字典顺序最小的。
- 华为计算字符个数写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
- 对输入的字符串按字典顺序输出所有的全排列,字符串可以由重复字符
- 输入一个字符串,删除个数最少的字符 , 如输入abbcc 输出bbcc
- 神州数码:输入一个字符串: (1)输出出现次数最少的字符 (2)删除出现 4000 次数最少的字符并输出字符串
- 题目:剔除一个字符中重复的字符,然后按ASCII码值从小到大排列。 例如,输入:abbcccddeeeffgghh 输出:abcdefgh 注意:1、剔除是整个字符串中重复的字符,而不是连续的字符 2
- 从标准输入读入一个由字母构成的串(不大于30个字符)。从该串中取出3个不重复的字符,求所有的取法。取出的字符,要求按字母升序排列成一个串。不同的取法输出顺序可以不考虑。
- 【华为机试题】删除输入字符串中重复字符
- 笔试题-输入一个字符数组将这些字符串按顺序合并输出-指针数组-数组指针-函数指针-指针函数
- 输入一个字符串内有数字和非数字字符,将连续的数字作为一个整数,存到数组a中,统计整数的个数,并输出这些数