1. 程式人生 > >華為面試題:請編寫一個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。

華為面試題:請編寫一個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。

#include<iostream>
#include<stdio.h>
#include<cstring>
using namespace std;
//void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr)
//{  
//    int temp=1,k=0;
//char j;
//for(int i=0;i<lInputLen-1;i++)
//{
//if(pInputStr[i]==pInputStr[i+1])
//{
//temp++;
//
//}
//else
//{   
//if(temp!=1)
//{
//j=temp+'0';
//temp=1;
//}
//pOutputStr[k++]=j;
//pOutputStr[k++]=pInputStr[i];
//}
//}
//pOutputStr[k++]=pInputStr[lInputLen-1];
//pOutputStr[k]='\0';
//};
////此段程式檢測10個以內的字元。
//
void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr)
{  
    int temp=1,k=0;
char j,m;
for(int i=0;i<lInputLen-1;i++)
{
if(pInputStr[i]==pInputStr[i+1])
{
temp++;

}
else
{   

if(temp>1&&temp<10)
{
pOutputStr[k++]=temp+'0';
//pOutputStr[k++]=pInputStr[i];
//temp=1;
}

if(temp>=10)
{  
pOutputStr[k++]=(temp/10)+'0';
pOutputStr[k++]=(temp%10)+'0';
//pOutputStr[k++]=pInputStr[i];
//temp=1;
}

pOutputStr[k++]=pInputStr[i];
temp=1;

}
}
pOutputStr[k++]=pInputStr[lInputLen-1];
pOutputStr[k]='\0';
};
int main()
{    
char p[7];
cin>>p;
long n=strlen(p);
char q[7];
stringZip(p,n,q);
cout<<q;;
system("pause");
return 0;
}