字串壓縮C++實現
阿新 • • 發佈:2018-12-29
#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; }