Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tích độ dài lớn nhất của hai từ không chung ký tự trong JavaScript

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