华为机试 - 字符串去重复字节/字符串去连续重复字节
2014-08-14 20:23
169 查看
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
比如字符串“abacacde”过滤结果为“abcde”。
要求实现函数:
void stringFilter(const char *pInputStr,long lInputLen, char *pOutputStr);
【输入】 pInputStr:输入字符串
lInputLen: 输入字符串长度
【输出】 pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
压缩规则:
1. 仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc".
2. 压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"
要求实现函数:
void stringZip(const char*pInputStr, long lInputLen, char *pOutputStr);
【输入】 pInputStr: 输入字符串
lInputLen: 输入字符串长度
【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;
比如字符串“abacacde”过滤结果为“abcde”。
要求实现函数:
void stringFilter(const char *pInputStr,long lInputLen, char *pOutputStr);
【输入】 pInputStr:输入字符串
lInputLen: 输入字符串长度
【输出】 pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;
#include <iostream> #include <climits> #include <algorithm> using namespace std; void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr) { int count[256]={0}; size_t index=0; for(int i=0;i<lInputLen;i++) { if (count[pInputStr[i]]==0) { count[pInputStr[i]]=1; pOutputStr[index++]=pInputStr[i]; } } } int main() { long inputLen; cin>>inputLen; char *str=new char[inputLen](); char *strOut=new char[inputLen](); for(int i=0;i<inputLen;i++) cin>>str[i]; stringFilter(str,inputLen,strOut); cout<<strOut<<endl; system("pause"); return 0; }
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
压缩规则:
1. 仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc".
2. 压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"
要求实现函数:
void stringZip(const char*pInputStr, long lInputLen, char *pOutputStr);
【输入】 pInputStr: 输入字符串
lInputLen: 输入字符串长度
【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;
#include <iostream> #include <climits> #include <algorithm> using namespace std; void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr) { if(pInputStr==NULL||lInputLen==0) return; size_t index=0; char prev=pInputStr[0]; int count=1; for(int i=1;i<lInputLen;i++) { if (prev!=pInputStr[i]) { if(count!=1) pOutputStr[index++]=count+'0'; pOutputStr[index++]=prev; prev=pInputStr[i]; count=1; } else { count++; } } if(count!=1) pOutputStr[index++]=count+'0'; pOutputStr[index]=prev; } int main() { long inputLen; cin>>inputLen; char *str=new char[inputLen](); char *strOut=new char[inputLen](); for(int i=0;i<inputLen;i++) cin>>str[i]; stringZip(str,inputLen,strOut); cout<<strOut<<endl; system("pause"); return 0; }
相关文章推荐
- 2014华为机试-在字符串中找出连续最长的数字串
- 华为机试:将字符串里第一次出现的字符输出,重复出现的不显示
- 华为机试:将字符串里第一次出现的字符输出,重复出现的不显示
- 华为面试题:请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
- 【华为机试】按字节截取字符串
- 华为上机笔试之通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
- 2013华为实习生上机考试试题(一)华为机试 请设计函数int getTest(char input[]) ,检测输入字符串中是否包含连续的或者离散的test,test只出现一次
- 华为机试:将字符串里第一次出现的字符输出,重复出现的不显示
- 华为机试在线训练-牛客网(38)在字符串中找出连续最长的数字串
- 华为机试:将字符串里第一次出现的字符输出,重复出现的不显示
- 华为机试:将字符串里第一次出现的字符输出,重复出现的不显示
- 华为机试:按字节截取字符串
- 字符串处理算法(八)将字符串中连续出席的重复字母进行压缩(华为校园招聘题)
- 华为机试-按字节截取字符串
- 华为机试:将字符串里第一次出现的字符输出,重复出现的不显示
- 华为机试:将字符串里第一次出现的字符输出,重复出现的不显示
- [华为机试练习题]15.删除重复字符/删除重复字符串
- 华为机试:将字符串里第一次出现的字符输出,重复出现的不显示
- 华为机试:将字符串里第一次出现的字符输出,重复出现的不显示
- 华为机试:将字符串里第一次出现的字符输出,重复出现的不显示