官方解答|標籤編輯日誌
官方解答
Python #105:標籤編輯日誌
解題規則
標籤工具會連續編輯同一份工作清單,請保存兩個階段的結果。
複製輸入清單後依序執行兩步。第一步:原地反向排列;第二步:在末尾接上當時清單的反向副本。第二步使用第一步處理完的清單。回傳 [第一步完成時的獨立快照, 第二步完成時的清單],之後的修改不能影響第一份快照。
處理步驟
複製輸入,依第一步規則建立 first,再以 first 計算 second;排序保留重複字串,回傳獨立快照。
為何正確
程式只讀取原輸入,不做原地修改。切片、串接或排序依指定規則產生結果;多步驟的第二步使用第一步結果,而摘要讀取題目指定的清單,因此順序、快照與統計來源一致。
邊界與注意事項
本題輸入範圍:清單長度 0~10;每個字串長度 0~20,只含 ASCII 字元。 除題目指定的篩選或移除外,保留原資料的重複項與順序;使用切片或明確判斷安全處理允許的空資料。
範例追蹤
依參數順序 words 傳入 [["apple","Pear","a2",""]]。關鍵中間資料為 current = ['apple', 'Pear', 'a2', ''];first = ['', 'a2', 'Pear', 'apple'];second = ['', 'a2', 'Pear', 'apple', 'apple', 'Pear', 'a2', '']。最後回傳 [['', 'a2', 'Pear', 'apple'], ['', 'a2', 'Pear', 'apple', 'apple', 'Pear', 'a2', '']]。結果由 return 回傳,不使用 print。
複雜度
設輸入及必要輸出的總大小為 n;複製、轉換或掃描最壞時間 O(n),保存中間資料與回傳結果最壞需要 O(n) 空間。
CodeSprout 官方解答 · 題意分析、解題步驟與完整參考程式
def solve(words):
current = list(words)
first = current[::-1]
second = first + first[::-1]
return [list(first), list(second)]
留言討論 0
登入 後就能留言,一起討論不同的寫法。