看了兩道題
一道是原地壓縮字串 例如把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個字元都可以,而且只要保證陣列大小足夠大,乙個空格替換成多個也無所謂,本質上是將乙...