程序,用于在Python中对来自不同邮箱的重要邮件进行排序

假设我们有一个邮箱列表。在每个邮箱中,这里都有一个字符串列表,在这里,每个字符串都是“ J”代表垃圾,“ P”代表个人,“ W”代表工作。我们将从第一个邮箱开始以循环方式遍历每个邮箱,过滤掉J,形成一个列表并返回列表。

因此,如果输入就像邮箱= [[“ 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

  • 更多:=正确

  • 虽然更多非零

    • 索引:=计数[i],邮箱:=邮箱[i]

    • 如果索引<邮箱大小,则

    • 在结果末尾插入邮件

    • 更多:=正确

    • counts [i]:= counts [i] + 1

    • 邮件:=邮箱[索引]

    • 如果邮件与“ J”不同,则

    • 更多:=错误

    • 对于范围在0到n_mailboxes中的我,执行

    • 返回结果

    让我们看下面的实现以更好地理解-

    示例

    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']
    猜你喜欢