สมมติว่าเราได้รับรายการของจำนวนเต็มบวก เราต้องจัดเรียงรายการในลำดับจากมากไปน้อย แล้วรวมสมาชิกทั้งหมดให้เป็นสตริงเดียว และคืนค่าสตริงนั้น
เช่น ถ้าอินพุตคือ input = [415, 78, 954, 123, 5] ผลลัพธ์จะเป็น 954785415123
ขั้นตอนการแก้ปัญหา
- กำหนดฟังก์ชัน
cmp()ที่รับพารามิเตอร์lและr:- ถ้าค่าจำนวนเต็มของ (สตริงของ
l+ สตริงของr) > ค่าจำนวนเต็มของ (สตริงของr+ สตริงของl) ให้คืนค่า1 - มิฉะนั้น ให้คืนค่า
-1
- ถ้าค่าจำนวนเต็มของ (สตริงของ
- จัดเรียงรายการ
inputตามฟังก์ชันเปรียบเทียบ - รวมสมาชิกทั้งหมดใน
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