题目描述
给一个字符串S
,从左到右将它们排列行,每行最大长度为100,同时给定一个数组withds
,widths[0]
对应着 a
的宽度, widths[1]
对应着b
的宽度, ..., widths[25]
对应着z
的宽度。
求:至少需要多少行以及最后一行的长度
下面是一个实例:
Example : Input: widths = [10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10] S = "abcdefghijklmnopqrstuvwxyz" Output: [3, 60] Explanation: All letters have the same length of 10. To write all 26 letters, we need two full lines and one line with 60 units.
260的宽度,需要排成2个100的行,第3行的长度为60,所以结果是[3,60]
思路
逐个排列S
中的每个字母,每排一个字母,需要检查当前行长度是否大于100,大于100,行数加1,长度变成最后一个元素的宽度。
代码实现
class Solution: def numberOfLines(self, widths, S): """ :type widths: List[int] :type S: str :rtype: List[int] """ letter_list=list("abcdefghijklmnopqrstuvwxyz") length=0 line=1 for s in S: length+=widths[letter_list.index(s)] if length>100: line+=1 length=widths[letter_list.index(s)] return [line,length]