ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน 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 ] ]