Python程式用於檢查所有列出的送貨操作是否有效
假設我們有一個名為orders的字串列表。orders列表中的每個元素都以“P”或“D”開頭。“P”表示取貨,“D”表示送貨。這些字母后面跟著訂單ID號。例如,“P6”表示取貨訂單6。我們必須根據以下規則檢查orders列表是否有效:
- 在取貨之前不能送貨
- 每次取貨都必須送貨
- 已經取貨並送達的訂單不能再次取貨或送貨
因此,如果輸入類似於orders = ["P1", "D1", "P2", "P3", "D3", "D2"],則輸出將為True,因為第一個訂單在取貨後送達,而對於第二個和第三個訂單,它們同時取貨,最終也送達。
為了解決這個問題,我們將遵循以下步驟:
- a := 一個新的對映
- 如果orders包含任何重複項,則
- 返回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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP