//============================================================================
// Name : mm.cpp
// Author : sfe
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include<string.h>
using namespace std;
char IntTochar(const int & iInput)
{
char cRet;
if(iInput == 0)
{
cRet = '0' ;
}
else if(iInput == 1)
{
cRet = '1' ;
}
else if(iInput == 2 )
{
cRet = '2' ;
}
else if(iInput == 3 )
{
cRet = '3' ;
}
else if(iInput == 4)
{
cRet = '4' ;
}
else if(iInput == 5)
{
cRet = '5' ;
}
else if(iInput == 6 )
{
cRet = '6' ;
}
else if(iInput == 7)
{
cRet = '7' ;
}
else if(iInput == 8)
{
cRet = '8' ;
}
else if(iInput == 9)
{
cRet = '9' ;
}
return cRet;
}
bool strCompress(const char * strInput, char *strOutPut)
{
char cTemp = strInput[0];
int iNum = 0 ;
strOutPut[iNum++] = cTemp;
int iSameNum = 1;
int m = strlen(strInput) ;
for(int i = 1; i < m ;i++)
{
if(cTemp == strInput[i])
{
iSameNum ++;
}
if( cTemp != strInput[i] ||( i+1 ==m))
{
int iHundred = iSameNum / 100 ;
int iTen = ( iSameNum % 100 ) / 10 ;
int iUnit= (iSameNum % 10) ;
cTemp = strInput[i];
// char str[10];
// int a=1234;
// sprintf(str,"%d",a);
if( iHundred > 0){
strOutPut[iNum++] = IntTochar(iHundred);
strOutPut[iNum++] = IntTochar(iTen);
strOutPut[iNum++] = IntTochar(iUnit);
}
else if( iTen > 0 ){
strOutPut[iNum++] = IntTochar(iTen);
strOutPut[iNum++] = IntTochar(iUnit);
}
else if( iUnit > 0){
if(iUnit >=2 )
{
strOutPut[iNum++] = IntTochar(iUnit);
}
}
iSameNum = 1;
if( (i+1) != m)
{
strOutPut[iNum++] = cTemp;
}
}
}
strOutPut[iNum] = '\0' ;
return true;
}
int main() {
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
char *strIput = "AABBBVV";
char strOut[20];
strCompress(strIput,strOut);
std::cout<<"output:"<<strOut<<std::endl;
return 0;
}
又来一段 简单的代码 简单的字符压缩
最新推荐文章于 2022-10-17 10:15:00 发布