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

โปรแกรมจัดเรียงรายการและรวมเป็นสตริงใน Python

สมมติว่าเราได้รับรายการของจำนวนเต็มบวก เราต้องจัดเรียงรายการในลำดับจากมากไปน้อย แล้วรวมสมาชิกทั้งหมดให้เป็นสตริงเดียว และคืนค่าสตริงนั้น

เช่น ถ้าอินพุตคือ input = [415, 78, 954, 123, 5] ผลลัพธ์จะเป็น 954785415123

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

  1. กำหนดฟังก์ชัน cmp() ที่รับพารามิเตอร์ l และ r:
    • ถ้าค่าจำนวนเต็มของ (สตริงของ l + สตริงของ r) > ค่าจำนวนเต็มของ (สตริงของ r + สตริงของ l) ให้คืนค่า 1
    • มิฉะนั้น ให้คืนค่า -1
  2. จัดเรียงรายการ input ตามฟังก์ชันเปรียบเทียบ
  3. รวมสมาชิกทั้งหมดใน input เป็นสตริงและคืนค่า

ตัวอย่างการใช้งาน

from functools import cmp_to_key

def cmp(l, r):
    if int(str(l) + str(r)) > int(str(r) + str(l)):
        return 1
    else:
        return -1

def solve(input):
    input.sort(key=cmp_to_key(cmp), reverse=True)
    return "".join(map(str, input))

print(solve([415, 78, 954, 123, 5]))

อินพุต

[415, 78, 954, 123, 5]

เอาต์พุต

954785415123