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