前往
大廳
主題

LeetCode - 1592. Rearrange Spaces Between Words 解題心得

Not In My Back Yard | 2023-05-06 12:00:07 | 巴幣 0 | 人氣 123

題目連結:


題目意譯:
你被給定一個字串 text,其為一些字詞被放置於若干數量的空白之間。每一個字詞由一個或多個小寫英文字母組成而每個字詞彼此之間由至少一個空白隔開。保證 text 中至少包含一個字詞。

將空白字元們重新排列使得每一隊相鄰的字詞之間有著相同數量的空白,且該數量盡可能地大。如果你無法平分空白字元,則將剩餘的空白放置於字串結尾,意謂著回傳的字串之長度應與 text 之長度相同。

回傳重新排列空白之後的字串。

限制:
1 ≦ text.length ≦ 100
text 由小寫英文字母以及 ' ' 組成。
text 至少包含一個字詞。



範例測資:
範例 1:
輸入: text = "  this   is  a sentence "
輸出: "this   is   a   sentence"
解釋: 總計有 9 個空白以及 4 個字詞。我們可以平均地把 9 個空白分散在字詞之間:9 / (4-1) = 3 空白。

範例 2:
輸入: text = " practice   makes   perfect"
輸出: "practice   makes   perfect "
解釋: 總計有 7 個空白以及 3 個字詞。7 / (3-1) = 3 空白以及一個額外的剩餘空白。我們把額外的空白放到字串的結尾。


解題思維:
就是單純地先把所有字詞抓出來形成一個字串陣列(假設有 X 個字詞),然後統計剩下的空白字元之總數(假設有 C 個)。

如果 X = 1,則不管有多少個空白都應該要丟到那唯一一個字詞的尾端;反之,我們可以計算出每一個字詞之間應要有「X / C 取整數」個空白。因此我們掃過每一個字詞然後每兩個字詞之間塞入相映數量的空白。最後多餘的空白再放到結果字串的尾端即可。




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

創作回應

更多創作