Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình Python sắp xếp chuỗi theo thứ tự tùy chỉnh


Cho chuỗi alphanumeric s. Sắp xếp theo quy tắc:

  1. Chữ thường (lowercase) đứng trước, sắp xếp tăng dần.
  2. Chữ hoa (uppercase) đứng sau chữ thường, sắp xếp tăng dần.
  3. Chữ số (digits) đứng cuối, trong đó số lẻ đứng trước số chẵn, mỗi nhóm sắp xếp tăng dần.

Ví dụ: "HeLlo1234" → "eloHL1324".

Ý tưởng

Gán mỗi ký tự một khóa sắp xếp (sort key) sao cho thứ tự so sánh khóa phản ánh đúng quy tắc trên. Cụ thể:

  • Chữ thường: khóa = ASCII.
  • Chữ hoa: khóa = 10³ + ASCII.
  • Chữ số: khóa = 10⁶ + ASCII.
  • Nếu mã ASCII chẵn (tức số chẵn), cộng thêm 10⁹ để đẩy số chẵn ra sau số lẻ.

Ví dụ mã nguồ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))  # eloHL1324

Đầu vào / Đầu ra

Input:  "HeLlo1234"
Output: eloHL1324