在Python中写字符串的行数
假设我们有一个字符串S,并且必须从左到右将给定字符串的字母写成几行。在这里,每行的最大宽度为100个单位,如果写一个字母会导致该行的宽度超过100个单位,则会在下一行上写该宽度。我们还有一个数组宽度,这里的widths[0]是'a'的宽度,widths[1]是'b'的宽度,依此类推。
我们必须找到两个问题的答案-
多少行中至少有一个字符来自S
最后一条这样的线使用的宽度是多少?
我们将以长度为2的整数列表返回答案。
因此,如果输入像[4,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,10]且S=“bbbcccdddaaa”,则输出将为[2,4],因为除'a'以外的所有字母都具有相同的10,并且字符串“bbbcccdddaa”将覆盖9*10+2*4=98个空格。对于最后一个“a”,它写在第二行上,因为第一行只剩下2个单位。所以答案是2行,第二行再加上4个单位。
为了解决这个问题,我们将遵循以下步骤-
行:=1,计数:=0
对于S中的每个i,
行:=行+1
count:=widths[i的ASCII-97]
count:=count+widths[i的ASCII-97]
如果计数>100,则
返回[行数]
让我们看下面的实现以更好地理解-
示例
class Solution: def numberOfLines(self, widths, S): line = 1 count = 0 for i in S: count += widths[ord(str(i))-97] if count > 100: line += 1 count = widths[ord(str(i))-97] return [line, count] ob = Solution()print(ob.numberOfLines([4,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], "bbbcccdddaaa"))
输入项
[4,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],"bbbcccdddaaa"
输出结果
[2, 4]