1
var palindromePairs = function (words) {
2
let wmap = new Map(),
3
ans = [];
4
for (let i = 0; i < words.length; i++) wmap.set(words[i], i);
5
for (let i = 0; i < words.length; i++) {
6
if (words[i] === "") {
7
for (let j = 0; j < words.length; j++)
8
if (isPal(words[j]) && j !== i) ans.push([i, j], [j, i]);
9
continue;
10
}
11
let bw = words[i].split("").reverse().join("");
12
let res = wmap.get(bw);
13
if (res !== undefined && res !== i) ans.push([i, res]);
14
for (let j = 1; j < bw.length; j++) {
15
if (isPal(bw, 0, j - 1)) {
16
let res = wmap.get(bw.slice(j));
17
if (res !== undefined) ans.push([i, res]);
18
}
19
if (isPal(bw, j)) {
20
let res = wmap.get(bw.slice(0, j));
21
if (res !== undefined) ans.push([res, i]);
22
}
23
}
24
}
25
return ans;
26
};
27

28
const isPal = (word, i = 0, j = word.length - 1) => {
29
while (i < j) if (word[i++] !== word[j--]) return false;
30
return true;
31
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0