0418:屏幕可显示句子的数量(★★)
目录
题目
给你一个 rows x cols
的屏幕和一个用 非空 的单词列表组成的句子,请你计算出给定句子可以在屏幕上完整显示的次数。
注意:
- 一个单词不能拆分成两行。
- 单词在句子中的顺序必须保持不变。
- 在一行中 的两个连续单词必须用一个空格符分隔。
- 句子中的单词总量不会超过 100。
- 每个单词的长度大于 0 且不会超过 10。
- 1 ≤
rows
,cols
≤ 20,000.
示例 1:
输入: rows = 2, cols = 8, 句子 sentence = ["hello", "world"] 输出: 1 解释: hello--- world--- 字符 '-' 表示屏幕上的一个空白位置。
示例 2:
输入: rows = 3, cols = 6, 句子 sentence = ["a", "bcd", "e"] 输出: 2 解释: a-bcd- e-a--- bcd-e- 字符 '-' 表示屏幕上的一个空白位置。
示例 3:
输入: rows = 4, cols = 5, 句子 sentence = ["I", "had", "apple", "pie"] 输出: 1 解释: I-had apple pie-I had-- 字符 '-' 表示屏幕上的一个空白位置。
分析
- 假如 cols 足够放 q 个完整句子,那么可以提前将每一行的 q 个完整句子挖掉,相应地减少 cols
- 按顺序放,令 d =i 代表第 i 行行头的单词是句子中第 x 个单词
- 显然 x 的值有限,因此有限行之后,必然进入循环
- 计算出一个循环中放了多少个完整句子,即可快速得到 rows 行的结果
解答
|
|
32 ms