Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การรวมสตริงเพื่อสร้างคู่พาลินโดรมใน JavaScript


ปัญหา

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