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

ความต่างสัมบูรณ์สูงสุดของความยาวสตริงจากสองอาร์เรย์ใน JavaScript

ปัญหา

เราต้องเขียนฟังก์ชัน JavaScript ที่รับสองอาร์เรย์ a1 และ a2 ของสตริง แต่ละสตริงประกอบด้วยตัวอักษร a-z ให้ x เป็นสตริงใดในอาร์เรย์แรก และ y เป็นสตริงใดในอาร์เรย์ที่สอง ฟังก์ชันควรหาค่า:

max(|length(x) - length(y)|)

ตัวอย่าง

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

const arr1 = ["hoqq", "bbllkw", "oox", "ejjuyyy", "plmiis", "xxxzgpsssa", "xxwwkktt", "znnnnfqknaz", "qqquuhii", "dvvvwz"];
const arr2 = ["cccooommaaqqoxii", "gggqaffhhh", "tttoowwwmmww"];
const findMaxAbsDiff = (arr1 = [], arr2 = []) => {
  if (arr1.length === 0 || arr2.length === 0) {
    return -1;
  }
  let l1 = arr1.map(str => str.length);
  let l2 = arr2.map(str => str.length);
  return Math.max(Math.max(...l1) - Math.min(...l2), Math.max(...l2) - Math.min(...l1));
};
console.log(findMaxAbsDiff(arr1, arr2));

ผลลัพธ์

13

คำอธิบายเพิ่มเติม

หาความยาว min/max ของแต่ละอาร์เรย์ ความต่างสัมบูรณ์สูงสุดจะเป็น max(max1-min2, max2-min1) ไม่ต้องเปรียบเทียบทุกคู่ (O(n×m)) แค่ O(n+m) arr1 max=11 (znnnnfqknaz) min=3 (oox) arr2 max=16 min=10 → max(11-10, 16-3) = max(1,13) = 13