ปัญหา
เราต้องเขียนฟังก์ชัน 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