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]

更新於:2020年7月4日

402 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.