443 壓縮字串

2021-10-02 12:34:49 字數 952 閱讀 8197

題目描述:給定一組字元,使用原地演算法將其壓縮。壓縮後的長度必須始終小於或等於原陣列長度。陣列的每個元素應該是長度為 1 的字元(不是 int 整數型別)。在完成原地修改輸入陣列後,返回陣列的新長度。

示例 1:

輸入:["a","a","b","b","c","c","c"]

輸出:返回6,輸入陣列的前6個字元應該是:["a","2","b","2","c","3"]

示例 2:

輸入:["a"]

輸出:返回1,輸入陣列的前1個字元應該是:["a"]

示例 3:

輸入:["a","b","b","b","b","b","b","b","b","b","b","b","b"]

輸出:返回4,輸入陣列的前4個字元應該是:["a","b","1","2"]。

注意:所有字元都有乙個ascii值在[35, 126]區間內。1 <= len(chars) <= 1000。

解析:三個變數,其中兩個用來移動尋找乙個字母出現的起始位置,另乙個表示壓縮進度。

i 指向字母的開始位置,j 不斷尋找與 i 所表示的字母不同的位置,遍歷過程中要注意 j 可能會增加到陣列末尾,如陣列 ['a','a'],所以當遇到以下兩種情況時就可以進行壓縮:

j == chars.length;

chars[i] != chars[j];

找到後 count = j-i 就是該字母出現的次數:

class solution 

if(j == chars.length || chars[i] != chars[j])

while (div > 0)

}i = j;}}

return len;

}}

443 壓縮字串

給定一組字元,使用原地演算法將其壓縮。壓縮後的長度必須始終小於或等於原陣列長度。陣列的每個元素應該是長度為1 的字元 不是 int 整數型別 在完成原地修改輸入陣列後,返回陣列的新長度。高階 你能否僅使用o 1 空間解決問題?示例 1 輸入 a a b b c c c 輸出 返回6,輸入陣列的前6個...

LeetCode 443 壓縮字串

給定一組字元,使用原地演算法將其壓縮。壓縮後的長度必須始終小於或等於原陣列長度。陣列的每個元素應該是長度為1 的字元 不是 int 整數型別 在完成原地修改輸入陣列後,返回陣列的新長度。高階 你能否僅使用o 1 空間解決問題?示例 1 輸入 a a b b c c c 輸出 返回6,輸入陣列的前6個...

leetcode 443 壓縮字串

題目描述 給定一組字元,使用原地演算法將其壓縮。壓縮後的長度必須始終小於或等於原陣列長度。陣列的每個元素應該是長度為1 的字元 不是 int 整數型別 在完成原地修改輸入陣列後,返回陣列的新長度。高階 你能否僅使用o 1 空間解決問題?示例 1 輸入 a a b b c c c 輸出 返回6,輸入陣...