ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของสตริงเป็นอาร์กิวเมนต์เดียว ฟังก์ชันนี้ควรจะส่งคืนอาร์เรย์ของอาร์เรย์ของคู่ดัชนีทั้งหมดที่เข้าร่วมสตริงซึ่งจะทำให้ได้สตริง palindrome ใหม่
ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −
const arr = ['tab', 'cat', 'bat'];
จากนั้นผลลัพธ์ควรเป็น −
const output = [[0, 2], [2, 0]];
คำอธิบายผลลัพธ์:
เพราะทั้งสตริง 'battab' และ 'tabbat' เป็นพาลินโดรมส์
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
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)); คำอธิบายโค้ด
เราได้ใช้ฟังก์ชันตัวช่วย isPalindome() เพื่อตรวจสอบว่าสตริงเป็น palindrome หรือไม่ และฟังก์ชันหลักของเราใช้ชุดค่าผสมทั้งหมดเพื่อสร้างคู่ที่เป็นไปได้ทั้งหมดและคู่ที่ตรงกับเงื่อนไขของเรา ดัชนีของพวกมันจะถูกผลักในอาร์เรย์ resพี>
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
[ [ 0, 2 ], [ 2, 0 ] ]