连接字符串以在 JavaScript 中形成回文对


问题

我们需要编写一个 JavaScript 函数,该函数接收一个字符串数组作为唯一参数。该函数应该返回一个数组的数组,其中包含所有连接字符串的索引对,连接后会生成一个新的回文字符串。

例如,如果输入的函数为:

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() 来检查一个字符串是否为回文,而我们的主函数使用所有组合来生成所有可能的对,以及符合我们条件的对,它们的索引被推送到 res 数组中。

输出

控制台输出如下:

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

更新于:19-Mar-2021

217 次浏览

开启您的职业

完成课程后获得认证

开始
广告