Maximum Product of the Length of Two Palindromic Subsequences LeetCode solution in JavaScript
1/**2* @param {string} s3* @return {number}4*/5var maxProduct = function (s) {6const n = s.length;7let map = new Map();8let res = 0;910for (let mask = 1; mask < 2 ** n; mask++) {11let str = "";12for (let i = 0; i < n; i++) {13if (mask & (1 << i)) {14str += s.charAt(n - 1 - i);15}16}17if (isPalindrom(str)) {18let length = str.length;19map.set(mask, length);20}21}2223map.forEach((l1, m1) => {24map.forEach((l2, m2) => {25if ((m1 & m2) == 0) {26res = Math.max(res, l1 * l2);27}28});29});3031return res;32};3334function isPalindrom(str) {35let l = 0;36let r = str.length - 1;3738while (l < r) {39if (str.charAt(l) != str.charAt(r)) {40return false;41}42l++;43r--;44}4546return true;47}