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