Sentence Screen Fitting
Given arows x colsscreen and a sentence represented by a list ofnon-emptywords, findhow many timesthe given sentence can be fitted on the screen.
Note:
- A word cannot be split into two lines. 
- The order of words in the sentence must remain unchanged. 
- Two consecutive words - in a line - must be separated by a single space. 
- Total words in the sentence won't exceed 100. 
- Length of each word is greater than 0 and won't exceed 10. 
- 1 ≤ rows, cols ≤ 20,000. 
Example 1:
Input:
rows = 2, cols = 8, sentence = ["hello", "world"]
Output:
1
Explanation:
hello---
world---
The character '-' signifies an empty space on the screen.Example 2:
Input:
rows = 3, cols = 6, sentence = ["a", "bcd", "e"]
Output:
2
Explanation:
a-bcd- 
e-a---
bcd-e-
The character '-' signifies an empty space on the screen.Example 3:
Input:
rows = 4, cols = 5, sentence = ["I", "had", "apple", "pie"]
Output:
1
Explanation:
I-had
apple
pie-I
had--
The character '-' signifies an empty space on the screen.分析
start表示当前总放入字符数。 每次row直接start+= cols。 然后start%len是空格代表本行不需要Padding。 不是的话去掉最后单词。
class Solution:
    def wordsTyping(self, sentence: List[str], rows: int, cols: int) -> int:
        s = ' '.join(sentence)+' '
        ln = len(s)
        start = 0
        for i in range(rows):
            start += cols
            if s[start %ln] == ' ': #可以塞入当前row,不用padding
                start += 1
            else:#去掉最后一个word,去下一行
                while start > 0 and s[(start-1)%ln] != ' ':#loop出来start在某word第一个字母处
                    start -= 1
        return  start//lnLast updated
Was this helpful?