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

Nối chuỗi tạo cặp palindrome trong JavaScript

Mô tả vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào mảng chuỗi làm đối số duy nhất. Hàm trả về mảng các cặp chỉ số mà nối chuỗi tại các chỉ số đó tạo ra chuỗi palindrome mới.

Ví dụ, nếu đầu vào là:

const arr = ['tab', 'cat', 'bat'];

Thì đầu ra nên là:

const output = [[0, 2], [2, 0]];

Giải thích đầu ra

Vì cả 'battab' và 'tabbat' đều là palindrome.

Ví dụ minh họa

Mã thực hiện:

const arr = ['tab', 'cat', 'bat']; 
const isPalindrome = (str = '') => { 
  let i = 0; 
  let j = str.length - 1; 
  while (i < j) { 
    if (str[i] != str[j]) return false; 
    i++; 
    j--; 
  }; 
  return true; 
}; 
const palindromePairs = (arr = []) => { 
  const res = []; 
  for (let i = 0; i < arr.length; i++) { 
    for (let j = i + 1; j < arr.length; j++) { 
      if (isPalindrome(arr[i] + arr[j])) { 
        res.push([i, j]); 
      } 
      if (isPalindrome(arr[j] + arr[i])) { 
        res.push([j, i]); 
      }; 
    }; 
  }; 
  return res; 
}; 
console.log(palindromePairs(arr));

Giải thích mã

Sử dụng hàm phụ isPalindrome() kiểm tra palindrome. Hàm chính dùng tổ hợp tất cả cặp, những cặp thỏa mãn điều kiện sẽ đẩy chỉ số vào mảng kết quả.

Đầu ra

Kết quả trong console sẽ là:

[ [ 0, 2 ], [ 2, 0 ] ]