在 Python 中写入字符串的行数

pythonserver side programmingprogramming更新于 2023/11/9 21:24:00

假设我们有一个字符串 S,我们必须将该字符串的字母从左到右写入行中。这里每行的最大宽度为 100 个单位,如果写入一个字母会导致行的宽度超过 100 个单位,则会将其写入下一行。我们还有一个数组 widths,这里 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,10] 且 S = "bbbcccdddaaa",则输出将为 [2, 4],因为除 'a' 之外的所有字母都具有相同的长度 10,并且字符串 "bbbcccdddaa" 将覆盖 9 * 10 + 2 * 4 = 98 个空格。对于最后一个 'a',它写在第二行,因为第一行只剩下 2 个单位。所以答案是 2 行,加上第二行的 4 个单位。

为了解决这个问题,我们将遵循以下步骤 −

  • line := 1, count := 0
  • 对于 S 中的每个 i,执行
    • count := count + widths[i 的 ASCII - 97]
    • if count > 100,然后
      • line := line + 1
      • count := widths[i 的 ASCII - 97]
  • 返回 [line, count]

让我们看看下面的实现以便更好地理解 −

示例

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]

相关文章