Description
Given a sentence text (A sentence is a string of space-separated words) in the following format:
- First letter is in upper case.
- Each word in text are separated by a single space.
Your task is to rearrange the words in text such that all words are rearranged in an increasing order of their lengths. If two words have the same length, arrange them in their original order.
Return the new text following the format shown above.
Example 1:
Input: text = "Leetcode is cool"
Output: "Is cool leetcode"
Explanation: There are 3 words, "Leetcode" of length 8, "is" of length 2 and "cool" of length 4.
Output is ordered by length and the new first word starts with capital letter.
Example 2:
Input: text = "Keep calm and code on"
Output: "On and keep calm code"
Explanation: Output is ordered as follows:
"On" 2 letters.
"and" 3 letters.
"keep" 4 letters in case of tie order by position in original text.
"calm" 4 letters.
"code" 4 letters.
Example 3:
Input: text = "To be or not to be"
Output: "To be or to be not"
Constraints:
- text begins with a capital letter and then contains lowercase letters and single space between words.
- 1 <= text.length <= 10^5
分析
题目的意思是:重新排列一个句子里面的单词,按照长度排序,如果长度相等则保持原来的顺序。如果用python就很简单了,直接把字符串变为小写之后,再按照空格切分,最后拼接,把首字母变为大写就行了。
代码
class Solution:
def arrangeWords(self, text: str) -> str:
text=text.lower()
arr=text.split()
arr1=sorted(arr,key=len)
return ' '.join(arr1).capitalize()