Giả sử chúng ta có một chuỗi chữ và số s. Chúng ta phải sắp xếp nó dựa trên điều kiện sau
-
Tất cả các chữ cái thường được sắp xếp sẽ được đặt trước các chữ cái viết hoa.
-
Tất cả các chữ cái viết hoa được sắp xếp sẽ được đặt trước các chữ số.
-
Tất cả các chữ số lẻ được sắp xếp sẽ được đặt trước các chữ số chẵn được sắp xếp.
Vì vậy, nếu đầu vào là s ="HeLlo1234", thì đầu ra sẽ là eloHL1324
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- Định nghĩa một hàm f (). Điều này sẽ mất c
- mã:=0
- nếu c là chữ hoa thì
- mã:=10 ^ 3
- ngược lại khi c là một chữ số thì
- mã:=10 ^ 6
- nếu ASCII của c là chẵn, thì
- mã:=10 ^ 9
- trả về mã + ASCII của c
- Từ phương thức chính, hãy làm như sau
- l:=danh sách được sắp xếp của các s và sắp xếp từng ký tự c trong s bằng cách gọi hàm f ()
- nối từng ký tự trong l và quay lại
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn
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)) Đầu vào
"HeLlo1234"
Đầu ra
eloHL1324