Sentence Screen Fitting

Posted beiyeqingteng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sentence Screen Fitting相关的知识,希望对你有一定的参考价值。

Given a rows x cols screen and a sentence represented by a list of words, find how many times the given sentence can be fitted on the screen.

Note:

  1. A word cannot be split into two lines.
  2. The order of words in the sentence must remain unchanged.
  3. Two consecutive words in a line must be separated by a single space.
  4. Total words in the sentence won‘t exceed 100.
  5. Length of each word won‘t exceed 10.
  6. 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.
分析:

统计加空格的句子总长度,然后遍历每一行,初始化colsRemainingcols,然后还需要一个变量idx,来记录当前单词的位置,如果colsRemaining大于0,就进行while循环,如果当前单词的长度小于等于colsRemaining,说明可以放下该单词,那么就减去该单词的长度就是剩余的空间,然后如果此时colsRemaining仍然大于0,则减去空格的长度1,然后idx自增1,如果idx此时超过单词个数的范围了,说明一整句可以放下,那么就有可能出现宽度远大于句子长度的情况,所以我们加上之前放好的一句之外,还要加上colsRemaining/len的个数,然后colsRemaining%len是剩余的位置,此时idx重置为0.

 1 class Solution 
 2     int wordsTyping(String[] sentence, int rows, int cols) 
 3         String all = "";
 4         for (String word : sentence) 
 5             all += (word + " ");
 6         
 7         int res = 0, idx = 0, n = sentence.length, len = all.length();
 8         for (int i = 0; i < rows; ++i) 
 9             int colsRemaining = cols;
10             while (colsRemaining > 0) 
11                 if (sentence[idx].length() <= colsRemaining) 
12                     colsRemaining -= sentence[idx].length();
13                     if (colsRemaining > 0) 
14                         colsRemaining -= 1;
15                     
16                     if (++idx >= n) 
17                         res += (1 + colsRemaining / len);
18                         colsRemaining %= len;
19                         idx = 0;
20                     
21                  else 
22                     break;
23                 
24             
25         
26         return res;
27     
28 

 

以上是关于Sentence Screen Fitting的主要内容,如果未能解决你的问题,请参考以下文章

Sentence Screen Fitting

[LeetCode] Sentence Screen Fitting 调整屏幕上的句子

LeetCode 418. Sentence Screen Fitting

418. 屏幕可显示句子的数量

[English learning][sentence] good sentence

[English learning][sentence] good sentence