在 Python 中检查所有列出的交付操作是否有效的程序
假设我们有一个名为orders的字符串列表。订单列表中的每个元素都以“P”或“D”开头。“P”表示自取,“D”表示“送货”。这些字母后跟订单ID号。例如,“P6”表示取货订单6。我们必须根据这些规则检查订单列表是否有效-
我们无法在取货前交付订单
每次取件都必须交付
已提货并已送达的订单无法再次提货或送达
因此,如果输入类似于orders=["P1","D1","P2","P3","D3","D2"],那么输出将为True,因为第一个订单是在取货后交付,对于第二个和第三个订单,它们会立即取货并最终交付。
示例
让我们看看以下实现以获得更好的理解-
def solve(orders): a = {} if len(set(orders)) != len(orders): return False for i in orders: if i[0] == "P": a[i[1:]] = 1 elif i[0] == "D": if i[1:] not in a: return False else: a[i[1:]] -= 1 return sum(a.values()) == 0 orders = ["P1", "D1", "P2", "P3", "D3", "D2"] print(solve(orders))
输入
["P1", "D1", "P2", "P3", "D3", "D2"]输出结果
True