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