用 Python 检查所有列出的送货操作是否有效的程序
pythonserver side programmingprogramming更新于 2026/1/5 18:52:17
假设我们有一个名为订单的字符串列表。订单列表中的每个元素都以"P"或"D"开头。"P"表示已取货,"D"表示"送货"。这些字母后面是订单 ID 号。例如,"P6"表示取货订单 6。我们必须根据这些规则检查订单列表是否有效 −
- 我们不能在取货前交付订单
- 每次取货都必须交付
- 已经取货并交付的订单不能再次取货或交付
因此,如果输入为 orders = ["P1", "D1", "P2", "P3", "D3", "D2"],则输出将为 True,因为第一个订单在取货后交付,而对于第二和第三个订单,它们将立即取货并最终交付。
为了解决这个问题,我们将遵循以下步骤 −
- a := a new map
- 如果订单有任何重复条目,则
- 返回 False
- 对于 orders 中的每个 i,执行
- 如果 i 以"P"开头,则
- a[取货订单号] = 1
- 否则,当 i 以"D"开头时,则
- 如果订单号不在 a 中,则
- 返回 False
- 否则,
- a[送货订单号] 减少 1
- 如果订单号不在 a 中,则
- 如果 i 以"P"开头,则
- 当 a 的所有值列表中存在的所有元素之和等于 0 时返回 true,否则返回 false
示例
让我们看看下面的实现以便更好地理解 −
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
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

