華為面試題:請編寫一個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。
阿新 • • 發佈:2019-02-09
#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;
}
#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;
}