給定一組字元,使用原地演算法將其壓縮。
壓縮後的長度必須始終小於或等於原陣列長度。
陣列的每個元素應該是長度為1 的字元(不是 int 整數型別)。
在完成原地修改輸入陣列後,返回陣列的新長度。
方法一:雙指標
直覺:我們使用兩個指標 read 和 write 分別標記讀和寫的位置。讀寫操作均從左到右進行:讀入連續的一串字元,然後將壓縮版寫到陣列中。最終,write 將指向輸出答案的結尾。
演算法:保留指標 anchor,指向當前讀到連續字串的起始位置。
從左到右進行讀取。當讀到最後乙個字元,或者下乙個下乙個字元與當前不同時,則到達連續區塊的結尾。
當我們到達連續區塊的結尾時,就從 write 寫入壓縮的結果。chars[anchor] 為字元,read - anchor + 1 (若大於 1)為長度。
func compress(chars byte) int}anchor = r + 1
} }return w
}
字串 字串壓縮
標題 字串壓縮 類別字串處理 時間限制 1s記憶體限制 1000kb 問題描述 有一種簡單的字串壓縮演算法,對於字串中連續出現的同乙個英文本元,用該字元加上連續出現的次數來表示 連續出現次數小於3時不壓縮 例如,字串aaaaabbbabaaaaaaaaaaaaabbbb可壓縮為a5b3aba13b4...
字串壓縮
include using namespace std 題目描述 通過鍵盤輸入一串小寫字母 a z 組成的字串。請編寫乙個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。壓縮規則 1.僅壓縮連續重複出現的字元。比如字串 abcbc 由於無連續重複字元,壓縮後的字串還是 abcb...
字串壓縮
通過鍵盤輸入一串小寫字母 a z 組成的字串。請編寫乙個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。壓縮規則 1 僅壓縮連續重複出現的字元。比如字串 abcbc 由於無連續重複字元,壓縮後的字串還是 abcbc 2 壓縮欄位的格式為 字元重複的次數 字元 例如 字串 yyy...