Python 程式根據自定義順序排序字串


假設我們有一個字母數字字串 s。我們需要根據以下條件對其進行排序

  • 所有排序後的**小寫字母**將放置在**大寫字母**之前。

  • 所有排序後的**大寫字母**將放置在**數字**之前。

  • 所有排序後的**奇數數字**將放置在排序後的**偶數數字**之前。

因此,如果輸入類似於 s = "HeLlo1234",則輸出將為 eloHL1324

為了解決這個問題,我們將遵循以下步驟:

  • 定義一個函式 f()。它將接收字元 c
  • 程式碼 := 0
  • 如果 c 為大寫字母,則
    • 程式碼 := 10^3
  • 否則,如果 c 為數字,則
    • 程式碼 := 10^6
  • 如果 c 的 ASCII 碼為偶數,則
    • 程式碼 := 10^9
  • 返回程式碼 + c 的 ASCII 碼
  • 在主方法中執行以下操作
  • l := s 的排序列表,並透過呼叫 f() 函式對 s 中的每個字元 c 進行排序
  • 連線 l 中的每個字元並返回

示例

讓我們看看以下實現,以便更好地理解

def f(c):
   code = 0
   if c.isupper():
      code = 10 ** 3
   elif c.isdigit():
      code = 10 ** 6
      if ord(c) % 2 == 0:
         code = 10 ** 9
   return code + ord(c)

def solve(s):
   l = sorted(s, key=lambda c: f(c))
   return ''.join(l)

s = "HeLlo1234"
print(solve(s))

輸入

"HeLlo1234"

輸出

eloHL1324

更新於: 2021年10月12日

782 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.