字串壓縮

2021-09-01 22:45:06 字數 1244 閱讀 3959

題目描述:

通過鍵盤輸入一串小寫字母(a~z)組成的字串。請編寫乙個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。

壓縮規則:

1. 僅壓縮連續重複出現的字元。比如字串"abcbc"由於無連續重複字元,壓縮後的字串還是"abcbc".

2. 壓縮欄位的格式為"字元重複的次數+字元"。例如:字串"***yyyyyyz"壓縮後就成為"3x6yz"

要求實現函式:

void stringzip(const char *pinputstr,longlinputlen,char*poutputstr);

【輸入】pinputstr: 輸入字串

linputlen: 輸入字串長度

【輸出】poutputstr: 輸出字串,空間已經開闢好,與輸入字元

串等長;

【注意】只需要完成該函式功能演算法,中間不需要有任何io 的輸入

輸出示例

輸入:「cccddecc」 輸出:「3c2de2c」

輸入:「adef」 輸出:「adef」

輸入:「pppppppp」 輸出:「8p」

自己寫的程式版本1(有bug,當重複元素超過9個的時候無法表示。原因:乙個char無法表示9以上的整數,因為超過9的就不是一位數了,兩位數就是兩個char了。)

#include "stdafx.h"

#include "substr.h"

#includeusing namespace std;

void stringzip(const char *pinputstr,long linputlen,char * poutputstr)

if(linputlen==1)

for(i=0;i

再來看看版本二,應用到了函式sprintf(目標字串,格式,引數們),解決了重複數大於9無法顯示的bug:

我把修改的部分加個注釋。

#include "stdafx.h"

#include "substr.h"

#includeusing namespace std;

void stringzip(const char *pinputstr,long linputlen,char * poutputstr)

if(linputlen==1)

memset(poutputstr,0,sizeof(poutputstr));

for(i=0;i

字串 字串壓縮

標題 字串壓縮 類別字串處理 時間限制 1s記憶體限制 1000kb 問題描述 有一種簡單的字串壓縮演算法,對於字串中連續出現的同乙個英文本元,用該字元加上連續出現的次數來表示 連續出現次數小於3時不壓縮 例如,字串aaaaabbbabaaaaaaaaaaaaabbbb可壓縮為a5b3aba13b4...

字串壓縮

include using namespace std 題目描述 通過鍵盤輸入一串小寫字母 a z 組成的字串。請編寫乙個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。壓縮規則 1.僅壓縮連續重複出現的字元。比如字串 abcbc 由於無連續重複字元,壓縮後的字串還是 abcb...

字串壓縮

通過鍵盤輸入一串小寫字母 a z 組成的字串。請編寫乙個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。壓縮規則 1 僅壓縮連續重複出現的字元。比如字串 abcbc 由於無連續重複字元,壓縮後的字串還是 abcbc 2 壓縮欄位的格式為 字元重複的次數 字元 例如 字串 yyy...