1. 程式人生 > >字串壓縮C++實現

字串壓縮C++實現

#include<iostream>
using namespace std;
void stringZip(const char*pInputStr,long llnputLen,char*pOutputStr)
{
	long l=0;					
	for (long i=0;i<llnputLen;i++)        //字串壓縮主要用到雙重迴圈比較
	{
		int count=1;
		for (long j=i+1;j<llnputLen;j++)
		{
			if (pInputStr[i]==pInputStr[j])
			{
				count++;
			}
			else
			{
				break;
			}
		}
		if (count==1)
		{
			pOutputStr[l]=pInputStr[i];
			l++;
		}
		else
		{
			pOutputStr[l]=(char)(count+'0');
			l++;
			pOutputStr[l]=pInputStr[i];
			l++;
		}
		i=i+count-1;//可以減少重複的迴圈,如果字母重複
	}
	pOutputStr[l]='\0';//此處如果不用l那麼輸出字串長度有問題
	for (long k=0;k<strlen(pOutputStr);k++)
	{
		cout<<pOutputStr[k];
	}
	cout<<endl;
}
int main()
{
	char*pInputStr="xxxyyzzbbhjzzz";
	long llnputLen=strlen(pInputStr);
	char*pOutputStr=new char (llnputLen);
	stringZip(pInputStr,llnputLen,pOutputStr);
	return 0;
	
}