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

หาผลคูณความยาวสูงสุดของคำที่ไม่มีตัวอักษรร่วมกันใน JavaScript


ปัญหา

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของสตริง (เฉพาะตัวอักษรภาษาอังกฤษพิมพ์เล็ก) เป็นอาร์กิวเมนต์เดียว

ฟังก์ชันควรเลือกสองสตริงจากอาร์เรย์ที่ไม่มีตัวอักษรร่วมกัน และมีผลคูณของความยาวมากที่สุด จากนั้นคืนค่าผลคูณความยาวของสองสตริงนั้น หากไม่มีคู่ดังกล่าว ให้คืนค่า 0

ตัวอย่างเช่น หากอินพุตคือ

const arr = ["karl", "n", "the", "car", "mint", "alpha"];

ผลลัพธ์ควรเป็น

const output = 20;

คำอธิบายผลลัพธ์:

คำว่า 'mint' และ 'alpha' ไม่มีตัวอักษรร่วมกัน และผลคูณของความยาวคือ 20

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

const arr = ["karl", "n", "the", "car", "mint", "alpha"]; 
const maxLengthProduct = (arr = []) => {
  const array = [];
  arr.forEach(str => {
    let curr = 0;
    for(let i = 0; i < str.length; i++){
      curr |= 1 << (str.charCodeAt(i) - 97);
    }
    array.push(curr);
  });
  let res = 0;
  for(let i = 0; i < array.length; i++) {
    for(let j = i + 1; j < array.length; j++) {
      if((array[i] & array[j]) === 0) {
        res = Math.max(res, arr[i].length * arr[j].length);
      }
    }
  }
  return res;
};
console.log(maxLengthProduct(arr));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็น

20