日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

字符串的压缩【百度】

發布時間:2024/6/18 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字符串的压缩【百度】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目如下:

通過鍵盤輸入一串小寫字母(a~z)組成的字符串。請編寫一個字符串壓縮程序,將字符串中連續出席的重復字母進行壓縮,并輸出壓縮后的字符串。
壓縮規則:
1、僅壓縮連續重復出現的字符。比如字符串"abcbc"由于無連續重復字符,壓縮后的字符串還是"abcbc"。
2、壓縮字段的格式為"字符重復的次數+字符"。例如:字符串"xxxyyyyyyz"壓縮后就成為"3x6yz"。


要求實現函數:
void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr);
輸入pInputStr:? 輸入字符串lInputLen:? 輸入字符串長度
輸出 pOutputStr: 輸出字符串,空間已經開辟好,與輸入字符串等長;
注意:只需要完成該函數功能算法,中間不需要有任何IO的輸入輸出。


示例輸入輸出:
輸入:“cccddecc”?? 輸出:“3c2de2c”
輸入:“adef”???? 輸出:“adef”
輸入:“pppppppp” 輸出:“8p”????

1 void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr){ 2 long temp=0,d_p=0,repeatCharNum=0,i=0; 3 char *a=new char[10],* temp2; 4 bool endingRepeat=false ; 5 for (;i<lInputLen-1;i++) 6 { 7 pOutputStr[d_p++]=pInputStr[i]; 8 if(pInputStr[i]==pInputStr[i+1]){ 9 if(i==lInputLen-2){ 10 endingRepeat=true; 11 } 12 d_p--; 13 repeatCharNum=2; 14 temp=i+1; 15 while(temp<lInputLen-1){ 16 temp++; 17 if(pInputStr[temp]==pInputStr[i]){ 18 if(temp==lInputLen-1){ 19 endingRepeat=true; 20 } 21 repeatCharNum++; 22 } 23 else 24 { 25 break; 26 } 27 } 28 itoa(repeatCharNum,a,10); 29 temp2=&a[0]; 30 while(*temp2){ 31 pOutputStr[d_p++]=*temp2; 32 temp2++; 33 } 34 pOutputStr[d_p++]=pInputStr[i]; 35 if(temp!=i) i=temp-1; 36 } 37 } 38 if (!endingRepeat) 39 { 40 pOutputStr[d_p++]=pInputStr[i]; 41 } 42 pOutputStr[d_p++]=0; 43 }

?

轉載于:https://www.cnblogs.com/havePassed/p/3560043.html

總結

以上是生活随笔為你收集整理的字符串的压缩【百度】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。