Mô tả vấn đề
Chúng ta cần viết hàm JavaScript nhận vào mảng chuỗi (chỉ chữ cái thường) làm đối số duy nhất. Hàm chọn hai chuỗi không có ký tự chung và có tích độ dài lớn nhất. Trả về tích độ dài đó. Nếu không tồn tại cặp như vậy, trả về 0.
Ví dụ, nếu đầu vào là:
const arr = ["karl", "n", "the", "car", "mint", "alpha"];
Thì đầu ra nên là:
const output = 20;
Giải thích đầu ra
Từ 'mint' và 'alpha' không chung ký tự, tích độ dài = 4 * 5 = 20.
Ví dụ minh họa
Mã thực hiện (bitmask):
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));Đầu ra
Kết quả trong console sẽ là:
20