程序,用于在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']