Python中写入字符串的行数
假设我们有一个字符串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]和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]
- 如果 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]
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP