leetcode 443 壓縮字串

2021-10-04 21:19:56 字數 1244 閱讀 1178

給定一組字元,使用原地演算法將其壓縮。

壓縮後的長度必須始終小於或等於原陣列長度。

陣列的每個元素應該是長度為1 的字元(不是 int 整數型別)。

在完成原地修改輸入陣列後,返回陣列的新長度。

高階:你能否僅使用o(1

) 空間解決問題?

示例 1:

輸入:[

"a",

"a",

"b",

"b",

"c",

"c",

"c"]

輸出:返回6,輸入陣列的前6個字元應該是:[

"a",

"2",

"b",

"2",

"c",

"3"]

說明:"aa"被"a2"替代。"bb"被"b2"替代。"ccc"被"c3"替代。

示例 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"]。

說明:由於字元"a"不重複,所以不會被壓縮。"bbbbbbbbbbbb"被「b12」替代。

注意每個數字在陣列中都有它自己的位置。

注意:所有字元都有乙個ascii值在[35,

126]區間內。

1<=

len(chars)

<=

1000。

方法:參考官方題解的寫法,read指標遍歷陣列,write指標只寫陣列,read指標遍歷連續相同的元素,直到有不同的元素,這是需要知道有多少連續,cur指標每次只指向一段相同元素的開頭索引,那麼read - cur + 1就是這段相同元素的長度,轉成字元由write寫下。

class

solution

} cur = read +1;

}}return write;

}}

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,輸入陣...

LeetCode 443 壓縮字串

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