用 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']

相关文章


有用资源