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