Sentence screen fitting
class Solution:
def wordsTyping(self, sentence: List[str], rows: int, cols: int) -> int:
sen = " ".join(sentence) + " "
n = len(sen)
start = 0
for row in range(rows):
#new start point on next row after cols chars displayed
start = start + cols
if sen[start % n] == " ":
start += 1
else:
# if after displaying cols chars, we reach middle of a word
# then we need to move to the start of the word and try to display
# it on next line
while(start > 0 and sen[(start-1) % n] != " "):
start -= 1
return start // n
Sentence Screen Fitting
Given a rows x cols screen and a sentence represented as a list of strings, return the number of times the given sentence can be fitted on the screen.
The order of words in the sentence must remain unchanged, and a word cannot be split into two lines. A single space must separate two consecutive words in a line.
Example 1:
Input: sentence = ["hello","world"], rows = 2, cols = 8 Output: 1 Explanation: hello--- world--- The character '-' signifies an empty space on the screen.
Example 2:
Input: sentence = ["a", "bcd", "e"], rows = 3, cols = 6 Output: 2 Explanation: a-bcd- e-a--- bcd-e- The character '-' signifies an empty space on the screen.
Example 3:
Input: sentence = ["i","had","apple","pie"], rows = 4, cols = 5 Output: 1 Explanation: i-had apple pie-i had-- The character '-' signifies an empty space on the screen.
Constraints:
1 <= sentence.length <= 1001 <= sentence[i].length <= 10sentence[i]consists of lowercase English letters.1 <= rows, cols <= 2 * 104