前言:正好碰见Leetcode有一次在线笔试,测试一下,还是挺开心的,全做出来了Rank:98/869。如有错误欢迎指正。博主首发优快云,mcf171专栏。
博客链接:mcf171的博客
——————————————————————————————
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:
- A word cannot be split into two lines.
- The order of words in the sentence must remain unchanged.
- Two consecutive words in a line must be separated by a single space.
- Total words in the sentence won't exceed 100.
- Length of each word won't exceed 10.
- 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.这个题目理解很容易,关键是怎么避免超时,我只做了一个trick,感觉不完美,但是最后只有10分钟左右,也没管了。最后也Accepted了,略意外。
public class Solution {
public int wordsTyping(String[] sentence, int rows, int cols) {
int i = 0; j = 0,k = 0,times = 0;
while( i < rows && j < cols){
if(sentence[k].length() > cols) break;
int remain = cols - j;
if(remain == sentence[k].length() + 1 || remain == sentence[k].length()){
k ++;j = 0;i++;
}else if( remain < sentence[k].length()){
j = 0; i ++;
}else{
j = j + sentence[k] + 1; k ++;
}
if( k == sentence.length) {k = 0; times ++;}
}
return times;
}
}