用 Python 对来自不同邮箱的重要邮件进行排序的程序
pythonserver side programmingprogramming更新于 2026/1/7 0:12:17
假设我们有一个邮箱列表。这里每个邮箱都有一个字符串列表,每个字符串要么是"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 := 邮箱大小
- 结果 := 一个新列表
- counts := 大小为 n_mailboxes 的列表,然后用 0 填充
- more := True
- 当 more 非零时,执行
- more := False
- 对于范围从 0 到 n_mailboxes 的 i,执行
- index := counts[i], mailbox := mailboxes[i]
- 如果 index <邮箱大小,则
- more := True
- counts[i] := counts[i] + 1
- mail := mailbox[index]
- 如果 mail 与"J"不同,则
- 在结果末尾插入 mail
- 返回 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']
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

