华为笔试题08
- 题目描述:
编写一个函数,计算出字符串中各种字母(a~z,A~Z)的个数,AABB输出A2B2,aabbCCAAA输出A3C2a2b2,输出结果需要按照字母排序(大写的比小写的排在前面)
- 要求实现函数:
void vConvertMsg(char *pInputStr, long lInputLen, char *pOutputStr);
【输入】
char *pInputStr:指向一个数组的指针
long lInputLen:该数组的长度
char *pOutputStr:指向一块输出的内存,'\0'作为字符串结束符
【返回】 无
【注意】 只需要完成该函数功能算法,中间不需要有任何IO的输入输出
- 示例
输入:qeddwqrAatt
返回:A1a1d2e1q2r1t2w1
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char str[]="qeddwqrtrewtgreAattzzz";
vector<char>a;
for(int i=0;i<strlen(str);++i)
a.push_back(str[i]);
sort(a.begin(),a.end());
char *out=new char [sizeof(str)];
char *out2=new char [sizeof(str)+10];
int i=0,j=0;
for(vector<char>::iterator iter=a.begin();iter!=a.end();iter++)
{
out[i]=*iter;
++i;
}
i=0;
int count=1;
while(i<strlen(str))
{
if(out[i]==out[i+1])
{
count++;
i++;
}
else
{
out2[j++]=out[i];
out2[j++]=count+'0';
i++;
count=1;
}
}
out2[j]='\0';
cout<<out2<<endl;
return 0;
}

浙公网安备 33010602011771号