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']
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP