题目描述
给一个字符串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]
标签:10,String,widths,Lines,Number,list,length,100,line
From: https://blog.51cto.com/u_16116809/6291768