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.