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

การสร้างตัวเลขที่ใหญ่ที่สุดจากอาร์เรย์ตัวเลขใน JavaScript

บทความนี้สาธิตการจัดเรียงตัวเลขในอาร์เรย์ต่อกันเพื่อให้ได้ตัวเลขที่ใหญ่ที่สุดเป็นสตริง

ตัวอย่าง

input: [5, 45, 34, 9, 3]
output: '9545343'

ตัวอย่างโค้ด

const arr = [5, 45, 34, 9, 3];

const largestNumber = (arr = []) => {
  if (arr.every(n => n === 0)) {
    return '0';
  }
  arr.sort((a, b) => {
    const s1 = new String(a);
    const s2 = new String(b);
    const first = s1 + s2;
    const second = s2 + s1;
    if (first > second) {
      return -1;
    } else if (first < second) {
      return 1;
    }
    return 0;
  });
  return arr.join('');
};

console.log(largestNumber(arr));

ผลลัพธ์

9545343

คำอธิบาย

เปรียบเทียบการต่อสตริง 2 แบบ: a+b vs b+a ใส่ตัวที่ให้ค่ามากกว่าก่อน

กรณีพิเศษ: หากทุกตัวเป็น 0 ให้คืน '0' ไม่ใช่ '000...'

นี่คือปัญหา "Largest Number" แบบคลาสสิก (LeetCode 179)