1. 程式人生 > 實用技巧 >華為機試26-字串排序

華為機試26-字串排序

題目描述
編寫一個程式,將輸入字串中的字元按如下規則排序。

規則 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