Link: https://leetcode.cn/problems/sentence-screen-fitting/
Question
difficulty: mid
adj diff: 5
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 <= 100
1 <= sentence[i].length <= 10
sentence[i] consists of lowercase English letters.
1 <= rows, cols <= 2 * 104
Code
class Solution {
public int wordsTyping(String[] sentence, int rows, int cols) {
int len = sentence.length;
int[] article = new int[len];
for (int i = 0; i < len; i++) {
article[i] = sentence[i].length();
}
int times = 0;
// One index to traverse the rows, another index to traverse the sentence
int rowIndex = 0;
int wordIndex = 0;
while (rowIndex < rows) {
int currentLen = 0;
while (currentLen + article[wordIndex] <= cols) {
currentLen += 1 + article[wordIndex++];
if (wordIndex == len) {
times++;
wordIndex = 0;
}
}
rowIndex++;
}
return times;
}
}