原地操作 刪除或壓縮 字串 in place

2021-06-21 05:49:08 字數 527 閱讀 3423

看了兩道題

一道是原地壓縮字串 例如把aaabbcdddd變為a3b2cd4

另一道是,給定乙個字串s和另外乙個字串t,in-place操作,刪除s中所有在t中出現過的字元

這種題目都是乙個套路,使用兩個char*的指標,fast和slow

以第二題為例:

fast和slow一開始都指向初始的字串s

遍歷fast,如果fast指向的字元在t中出現過,則跳過。如果fast指向的字元沒有在t中出現過,則將fast指向的字元賦給slow,slow指向下乙個位置。

最終不要忘記把slow加上字串結束符'\0'

這裡貼乙個第一道題的**,考慮到**方便我只寫了相同字元數不超過9的方法,如果擴充套件只需要在這個層面上擴充套件即可

char* compress(char* s)

if(count==1)

slow++;

else

} *slow = '\0';

return s;

}

深究字串壓縮 原地壓縮 哈夫曼壓縮(一)

深究字串壓縮系列一共兩大部分,會分別闡述原地壓縮演算法和哈夫曼演算法 本文主要內容是原地壓縮演算法。如果有乙個字串 a,a,a,b,b,c 如果直接這樣儲存,需6個空間,但如果將其壓縮成 a,3,b,2,c 則只需要5個空間,這樣就實現了一次壓縮。而在壓縮的過程中,不再多使用別的記憶體空間,又將這種...

C語言字串原地壓縮實現方法

字串原地壓縮示例 eeeeeaaaff 壓縮為 e5a3f2 具體功能 如下 copyright c 2011 alexingcool.程式設計客棧 all rights reserved.include include include using na程式設計客棧mespace std char ...

字串空格替換或刪除

1.將乙個字串裡面的空格替換成 20,不考慮字元陣列大小溢位,不得使用庫函式 2.將乙個字串裡面的乙個或多個空格替換成乙個空格 這兩道題都是關於字串替換,不同的是第一道題是將乙個空格替換為3個字元 20,當然這裡任意3個字元都可以,而且只要保證陣列大小足夠大,乙個空格替換成多個也無所謂,本質上是將乙...