題目描述:
通過鍵盤輸入一串小寫字母(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...