在 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 ] ]