Vấn đề
Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng chuỗi làm đối số duy nhất. Hàm được cho là trả về một mảng các mảng của tất cả các cặp chỉ mục tham gia các chuỗi mà tại đó tạo ra một chuỗi palindrome mới.
Ví dụ:nếu đầu vào của hàm là -
const arr = ['tab', 'cat', 'bat'];
Sau đó, đầu ra phải là -
const output = [[0, 2], [2, 0]];
Giải thích đầu ra:
Bởi vì cả hai chuỗi ‘battab’ và ‘tabbat’ đều là palindromes.
Ví dụ
Mã cho điều này sẽ là -
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ã
Ở đây, chúng tôi đã sử dụng một hàm trợ giúp isPalindome () để kiểm tra xem một chuỗi có phải là palindrome hay không và hàm chính của chúng tôi sử dụng tất cả các kết hợp để tạo tất cả các cặp có thể có và những cặp phù hợp với điều kiện của chúng tôi, chỉ mục của chúng được đẩy vào mảng res.
Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
[ [ 0, 2 ], [ 2, 0 ] ]