Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมจัดเรียงสตริงตามลำดับที่กำหนดเองใน Python

สมมติว่าเรามีสตริง alphanumeric s เราต้องจัดเรียงตามเงื่อนไขดังนี้:

  • ตัวอักษรพิมพ์เล็กที่จัดเรียงแล้ว จะอยู่หน้าตัวอักษรพิมพ์ใหญ่
  • ตัวอักษรพิมพ์ใหญ่ที่จัดเรียงแล้ว จะอยู่หน้าตัวเลข
  • ตัวเลขคี่ที่จัดเรียงแล้ว จะอยู่หน้าตัวเลขคู่ที่จัดเรียงแล้ว

ตัวอย่างเช่น หาก s = "HeLlo1234" ผลลัพธ์จะเป็น eloHL1324

ขั้นตอนการแก้ปัญหา

  • กำหนดฟังก์ชัน f(c) รับตัวอักษร c:
    • code := 0
    • ถ้า c เป็นพิมพ์ใหญ่: code := 10^3
    • ถ้า c เป็นตัวเลข: code := 10^6
    • ถ้า ASCII ของ c เป็นเลขคู่: code := 10^9
    • คืนค่า code + ASCII ของ c
  • จากฟังก์ชันหลัก:
    • l := รายการที่จัดเรียง s โดยเรียงลำดับแต่ละตัวอักษร c ด้วยการเรียก f()
    • รวมตัวอักษรใน 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