Python程式:從不同郵箱中排序重要郵件


假設我們有一系列郵箱。每個郵箱中都包含一個字串列表,每個字串要麼是“J”(垃圾郵件),要麼是“P”(個人郵件),要麼是“W”(工作郵件)。我們將按照迴圈順序(從第一個郵箱開始)遍歷每個郵箱,過濾掉“J”,形成一個單一的列表並返回該列表。

例如,如果輸入為 mailboxes = [["W", "P"],["J", "P", "J"],["W"]],則輸出將為 ["W", "W", "P", "P"]。因為按照順序且不進行過濾,我們有 W -> J -> W -> P -> P -> J,現在由於我們過濾掉了垃圾郵件,所以我們得到 W -> W -> P -> P。

為了解決這個問題,我們將遵循以下步驟:

  • n_mailboxes := mailboxes 的大小
  • result := 一個新的列表
  • counts := 一個大小為 n_mailboxes 的列表,然後填充為 0
  • more := True
  • 當 more 不為零時,執行以下操作:
    • more := False
    • 對於 i 從 0 到 n_mailboxes 的範圍,執行以下操作:
      • index := counts[i],mailbox := mailboxes[i]
      • 如果 index < mailbox 的大小,則:
        • more := True
        • counts[i] := counts[i] + 1
        • mail := mailbox[index]
        • 如果 mail 不等於 "J",則:
          • 將 mail 插入到 result 的末尾
  • 返回 result

讓我們看一下下面的實現來更好地理解:

示例

 線上演示

class Solution:
   def solve(self, mailboxes):
      n_mailboxes = len(mailboxes)
      result = []
      counts = [0]*n_mailboxes
      more = True
      while more:
         more = False
         for i in range(n_mailboxes):
            index, mailbox = counts[i], mailboxes[i]
            if index < len(mailbox):
               more = True
               counts[i] += 1
               mail = mailbox[index]
               if mail != "J":
                  result.append(mail)
         return result
ob = Solution()
mailboxes = [["W", "P"],["J", "P", "J"],["W"]]
print(ob.solve(mailboxes))

輸入

[["W", "P"],["J", "P", "J"],["W"]]

輸出

['W', 'W', 'P', 'P']

更新於: 2020年10月5日

346 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.