CodeSprout程式萌芽
困難第 105 題 · 標籤編輯日誌
CodeSprout 官方2026/10/04 00:19
官方解答 · 置頂Python

官方解答|標籤編輯日誌

官方解答

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