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']
广告