标签:The time row 还需 main man color lse present
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:
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.
分析:
统计加空格的句子总长度,然后遍历每一行,初始化colsRemaining为cols,然后还需要一个变量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 }
标签:The time row 还需 main man color lse present
原文地址:https://www.cnblogs.com/beiyeqingteng/p/11206611.html