C語(yǔ)言字符串快速壓縮算法代碼
通過(guò)鍵盤輸入一串小寫字母(a~z)組成的字符串。
請(qǐng)編寫一個(gè)字符串壓縮程序,將字符串中連續(xù)出席的重復(fù)字母進(jìn)行壓縮,并輸出壓縮后的字符串。
壓縮規(guī)則:
1、僅壓縮連續(xù)重復(fù)出現(xiàn)的字符。比如字符串”abcbc”由于無(wú)連續(xù)重復(fù)字符,壓縮后的字符串還是”abcbc”。
2、壓縮字段的格式為”字符重復(fù)的次數(shù)+字符”。例如:字符串”xxxyyyyyyz”壓縮后就成為”3x6yz”。
示例
輸入:“cccddecc” 輸出:“3c2de2c”
輸入:“adef” 輸出:“adef”
輸入:“pppppppp” 輸出:“8p”
主要說(shuō)來(lái)就是進(jìn)行字符串處理類的問題,主要涉及到:
1.字符串的輸入與輸出;
2.基本常用的C語(yǔ)言的字符串的函數(shù)使用;
3.對(duì)于多重情況的考慮;
4.將數(shù)字轉(zhuǎn)換成字符串并進(jìn)行拼接;
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char str[100] = {'\0'};
char res[100] = {'\0'};
scanf("%s",str);
int length = strlen(str);
int i=0, j=0, k=0;
int count = 0;
do
{
if(i < length && str[i++] == str[j])
count++;
if(str[i] != str[j])
{
if(count <= 1)
res[k++] = str[j];
else
{
if(count > 1)
{
char temp[10] = {'\0'};
itoa(count,temp,10);
strcpy(res+k,temp);
k+=strlen(temp);
res[k++] = str[j];
}
}
j = i;
count = 0;
}
}while(i<length);
res[k] = '\0';
printf("The result is : %s\n",res);
return 0;
}
以上就是本文給大家分享的字符串壓縮算法的全部?jī)?nèi)容了,希望對(duì)大家學(xué)習(xí)C語(yǔ)言能夠有所幫助。
- C語(yǔ)言實(shí)現(xiàn)的猴子吃桃問題算法解決方案
- C語(yǔ)言 選擇排序算法詳解及實(shí)現(xiàn)代碼
- C語(yǔ)言二分查找算法及實(shí)現(xiàn)代碼
- C語(yǔ)言選擇排序算法及實(shí)例代碼
- C語(yǔ)言實(shí)現(xiàn)的猴子偷桃之類算法
- C語(yǔ)言實(shí)現(xiàn)排序算法之歸并排序詳解
- c語(yǔ)言實(shí)現(xiàn)冒泡排序、希爾排序等多種算法示例
- c語(yǔ)言 漢諾塔算法代碼
- C語(yǔ)言實(shí)現(xiàn)斗地主的核心算法
- 馬爾可夫鏈算法(markov算法)的awk、C++、C語(yǔ)言實(shí)現(xiàn)代碼
- 詳解約瑟夫環(huán)問題及其相關(guān)的C語(yǔ)言算法實(shí)現(xiàn)
- C語(yǔ)言實(shí)現(xiàn)的猴子分桃問題算法解決方案
相關(guān)文章
OpenGL實(shí)現(xiàn)中點(diǎn)劃線法
這篇文章主要為大家詳細(xì)介紹了OpenGL實(shí)現(xiàn)中點(diǎn)劃線法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02
C語(yǔ)言棧順序結(jié)構(gòu)實(shí)現(xiàn)代碼
一個(gè)能夠自動(dòng)擴(kuò)容的順序結(jié)構(gòu)的棧 ArrStack 實(shí)例 (GCC編譯),有需要的朋友可以參考一下2013-10-10
C++有符號(hào)和無(wú)符號(hào)之間的轉(zhuǎn)換問題
在開發(fā)中經(jīng)常會(huì)遇到有符號(hào)和無(wú)符號(hào)之間的轉(zhuǎn)換問題,如果不清楚問題根源,很難解決bug,今天小編通過(guò)本文給大家分享c++有符號(hào)無(wú)符號(hào)轉(zhuǎn)換問題,需要的朋友參考下2021-07-07
c++動(dòng)態(tài)內(nèi)存空間示例(自定義空間類型大小和空間長(zhǎng)度)
這篇文章主要介紹了c++動(dòng)態(tài)內(nèi)存空間示例,自定義空間類型大小和空間長(zhǎng)度,需要的朋友可以參考下2014-04-04
C++中volatile關(guān)鍵字的使用詳解以及常見的誤解
volatile 關(guān)鍵字是一種類型修飾符,用它聲明的類型變量表示可以被某些編譯器未知的因素更改,比如:操作系統(tǒng),硬件或者其他線程等2020-01-01
C語(yǔ)言求Fibonacci斐波那契數(shù)列通項(xiàng)問題的解法總結(jié)
斐波那契數(shù)列相關(guān)問題是考研和ACM中常見的算法題目,這里特地為大家整理了C語(yǔ)言求Fibonacci斐波那契數(shù)列通項(xiàng)問題的解法總結(jié),需要的朋友可以參考下2016-06-06
Objective-C限制函數(shù)調(diào)用的頻率詳解
這篇文章主要給大家介紹了關(guān)于Objective-C限制函數(shù)調(diào)用的頻率的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12
C++實(shí)現(xiàn)LeetCode(67.二進(jìn)制數(shù)相加)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(67.二進(jìn)制數(shù)相加),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07

