在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]