前往
大廳
主題

LeetCode - 2138. Divide a String Into Groups of Size k 解題心得

Not In My Back Yard | 2022-07-24 12:00:22 | 巴幣 2 | 人氣 169

題目連結:


題目意譯:
一字串可以根據以下方式被分切成若干個大小為 k 的部分:
第一個部分由字串的前 k 個字元組成,第二個部分則由接著 k 個字元組成,以此類推。每個字元只能為恰好一個部分的一份子。
對於最後一部分,如果字串剩下的字元不足 k 個,字元 fill 將會用來填充空位來補滿這個部分。

注意到分切之完成取決於將最後一部分的 fill 字元消除之後(如果有的話)將所有部分依序串接在一起,得到的字串應為 s。

給定字串 s、每個部分的大小 k 以及字元 fill,回傳一個字串陣列代表著 s 按照上面的步驟分切後形成的每個部分。

限制:
1 ≦ s.length ≦ 100
s 由小寫英文字母組成。
1 ≦ k ≦ 100
fill 為小寫英文字母。



範例測資:
範例 1:
輸入: s = "abcdefghi", k = 3, fill = "x"
輸出: ["abc","def","ghi"]
解釋:
開頭 3 個字元 "abc" 形成第一個部分。
接著 3 個字元 "def" 形成第二個部分。
最後 3 個字元 "ghi" 形成第三個部分。
由於每個部分都有被字串中的字元填滿,因此不需要動用到 fill。
因此過程中形成的部分為 "abc" 、 "def" 和 "ghi"。

範例 2:
輸入: s = "abcdefghij", k = 3, fill = "x"
輸出: ["abc","def","ghi","jxx"]
解釋:
與前一個例子相似,我們形成了前三個部分 "abc" 、 "def" 和 "ghi"。
對於最後一個部分,我們只能使用字串中的字元 'j'。為了填滿部分,我們將 'x' 加進去兩次。
因此過程中形成的 4 個部分為 "abc" 、 "def" 、 "ghi" 以及 "jxx"。


解題思維:
就是單純地掃過字串 s,然後每 k 個字元放進一個新的字串之中,將這些新字串集結起來即是所求。

而如果掃完字串之後,最後一個部分長度不足 k 個字元就多補上若干個字元 fill 直到長度符合為止。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作