1. 問題描述:
給你乙個字串 text ,該字串由若干被空格包圍的單詞組成。每個單詞由乙個或者多個小寫英文本母組成,並且兩個單詞之間至少存在乙個空格。題目測試用例保證 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 個空格加上 1 個多餘的空格。多餘的空格需要放在字串的末尾。
示例 3:
輸入:text = "hello world"
輸出:"hello world"。
示例 4:
輸入:text = " walks udp package into bar a"
輸出:"walks udp package into bar a "
示例 5:
輸入:text = "a"
輸出:"a"
2. 思路分析:
分析題目可以知道我們需要統計出句子中的空格數目,然後將其平均分配到每個單詞中的間隔即可,python中多個字元的拼接可以使用: c * n(c表示具體的字元,n表示字元的數目),使用join方法返回列表中的元素以某個字串進行分割後的字串,strip去除字串中的前後空格
3. **如下:
class solution:
def reorderspaces(self, text: str) -> str:
# n統計所有的空格數目 s記錄單詞
i, s, n = 0, list(), 0
while i < len(text):
while i < len(text) and text[i] == " ":
n += 1
i += 1
t = ""
while i < len(text) and text[i] != " ":
t += text[i]
i += 1
if len(s) == 1: return text.strip() + " " * n
spaces = " " * (n // (len(s) - 1))
return spaces.join(s) + " " * (n % (len(s) - 1))
力扣題解簡潔的**:
class solution:
def reorderspaces(self, text: str) -> str:
c = text.count(" ")
li = text.strip().split()
if len(li) == 1:
return li[0] + " " * c
s, s1 = divmod(c, len(li) - 1)
return (" " * s).join(li) + " " * s1
5413 重新排列句子中的單詞
句子 是乙個用空格分隔單詞的字串。給你乙個滿足下述格式的句子 text 句子的首字母大寫 text 中的每個單詞都用單個空格分隔。請你重新排列 text 中的單詞,使所有單詞按其長度的公升序排列。如果兩個單詞的長度相同,則保留其在原句子中的相對順序。請同樣按上述格式返回新的句子。輸入 text le...
1470 重新排列陣列
1470.重新排列陣列 給你乙個陣列 nums 陣列中有 2n 個元素,按 x1,x2,xn,y1,y2,yn 的格式排列。請你將陣列按 x1,y1,x2,y2,xn,yn 格式重新排列,返回重排後的陣列。示例 1 輸入 nums 2,5,1,3,4,7 n 3 輸出 2,3,5,4,1,7 解釋 ...
937 重新排列日誌檔案
weekly contest 110的第一題 重新排列日誌檔案 你有乙個日誌陣列logs。每條日誌都是以空格分隔的字串。對於每條日誌,其第乙個字為字母數字識別符號。然後,要麼 我們將這兩種日誌分別稱為字母日誌和數字日誌。保證每個日誌在其識別符號後面至少有乙個字。將日誌重新排序,使得所有字母日誌都排在...