# Problem 418: Sentence Screen Fitting

> <https://leetcode.com/problems/sentence-screen-fitting/>

![](https://1241747088-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lpv9LvBSlFaukf_ALqh%2F-Lpv9NPw3Ji1X5Vk8CES%2F-Lpv9wqp4SrJuSWe4OWM%2F418_1.png?generation=1569729533767110\&alt=media) ![](https://1241747088-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lpv9LvBSlFaukf_ALqh%2F-Lpv9NPw3Ji1X5Vk8CES%2F-Lpv9wqrRfGUiKaD7ack%2F418_2.png?generation=1569729534159964\&alt=media)

## 思路

![](https://1241747088-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lpv9LvBSlFaukf_ALqh%2F-Lpv9NPw3Ji1X5Vk8CES%2F-Lpv9wqttJ0copQqBoXX%2F418_3.png?generation=1569729533914630\&alt=media)

## 复杂度

* Time &#x20;

  $$O(m + n)$$ &#x20;

  其中 m 是 rows，n 是 cols

```java
public class Solution {
    public int wordsTyping(String[] sentence, int rows, int cols) {
        String s = String.join(" ", sentence) + " ";
        int len = s.length(), count = 0;
        int[] index = new int[len];

        for (int i = 1; i < len; i++) {
            index[i] = s.charAt(i) == ' ' ? 1 : index[i - 1] - 1;
        }
        for (int i = 0; i < rows; i++) {
            count += cols;
            count += index[count % len];
        }

        return count / len;
    }
}
```

## 易错点

1. index\[] 的计数是从 1 开始的

   ```java
   for (int i = 1; i < len; i++) {
        index[i] = s.charAt(i) == ' ' ? 1 : index[i - 1] - 1;
   }
   ```
2. String join 函数

   ```java
   String.join(" ", sentence)
   ```

   join 函数实际上，第一个 parameter 是分隔符，比如 “-”，这里我们用的是 space。也就是说，字符串数组里的元素会被 space 连接起来。
