官方解答 · 置頂Python
官方解答|字元分類報表
官方解答
Python #429:字元分類報表
解題規則
編輯工具逐段將文字分成指定字元集合內外兩部分,請產生批次報表。
用 string 模組定義「英文字母」。逐段處理 texts,每段輸出刪除指定字元、其餘保留原順序的文字。段內索引從0開始;字元順序除另有規定外維持原樣。最後將各段結果的順序反轉回傳清單。
處理步驟
由 string 常數建立字元集合;每段分成集合內和集合外字元,再按題目輸出文字、位置或旗標,最後處理段落順序。
為何正確
標準模組函式各自實作所指定的日期、文字或統計運算。篩選依原值、轉換依保留項目、摘要依規定集合進行,因此輸出的資料來源與型態一致。
邊界與注意事項
本題輸入範圍:最多10段文字,每段0~30字元;包含一般空白、Tab、換行、英文字母、數字或標點。
範例追蹤
依參數順序 texts 傳入 [["apple","Pear","a2",""]]。關鍵中間資料為 alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';result = ['', '', '2', ''];text = '';indices = []。最後回傳 ['', '2', '', '']。結果由 return 回傳,不使用 print。
複雜度
設輸入及必要輸出的總大小為 n;複製、轉換或掃描最壞時間 O(n),保存中間資料與回傳結果最壞需要 O(n) 空間。
CodeSprout 官方解答 · 題意分析、解題步驟與完整參考程式
import string
def solve(texts):
alphabet = string.ascii_letters
result = []
for text in texts:
indices = [i for i, char in enumerate(text) if char in alphabet]
selected = ''.join(char for char in text if char in alphabet)
removed = ''.join(char for char in text if char not in alphabet)
result.append(removed)
return result[::-1]
留言討論 0
登入 後就能留言,一起討論不同的寫法。