華為機試26-字串排序
阿新 • • 發佈:2020-08-21
題目描述
編寫一個程式,將輸入字串中的字元按如下規則排序。
規則 1 :英文字母從 A 到 Z 排列,不區分大小寫。
如,輸入: Type 輸出: epTy
規則 2 :同一個英文字母的大小寫同時存在時,按照輸入順序排列。
如,輸入: BabA 輸出: aABb
規則 3 :非英文字母的其它字元保持原來的位置。
如,輸入: By?e 輸出: Be?y
注意有多組測試資料,即輸入有多行,每一行單獨處理(換行符隔開的表示不同行)
輸入描述:
輸入字串
輸出描述:
輸出字串
示例1
輸入
A Famous Saying: Much Ado About Nothing (2012/8).
輸出
A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).
參考:
while True: try: a = input() # res是最終返回的字串的列表形式,char是提取的英文字母。 res, char = [False] * len(a), [] # 經過這個迴圈,把相應的非英文字母及其位置儲存到了res中。並且把英文字母提取出來了。 for i, v in enumerate(a): if v.isalpha(): #檢測字串v是否只由字母組成。 char.append(v)else: res[i] = v # 使用lambda表示式排序,暴力有效。 char.sort(key=lambda c: c.lower()) # 將char中對應的字元填到res中。 for i, v in enumerate(res): if not v: #v為False res[i] = char[0] #替換 char.pop(0) print("".join(res))except: break
執行結果:答案正確:恭喜!您提交的程式通過了所有的測試用例用例通過率:100.00%執行時間:28ms佔用記憶體:3448KB