2
// https://leetcode.com/problems/longest-subsequence-repeated-k-times/discuss/1471930/Python-Answer-is-not-so-long-explained4
var longestSubsequenceRepeatedK = function (s, k) {7
if (!freq[c]) freq[c] = 0;13
for (const [c, cnt] of Object.entries(freq)) {14
const repeat = Math.floor(cnt / k);15
hot += c.repeat(repeat);18
// Find all subset and permutation of hot string19
let targets = new Set();20
const subsets = getSubset(hot);21
for (const subset of subsets) {22
const permutations = getPermutation(subset);23
for (const per of permutations) targets.add(per);26
// Sort targets by length and lexico27
targets = [...targets].sort((a, b) => {28
const delta = b.length - a.length;29
if (delta) return delta;30
return b.localeCompare(a);33
// Filter s and check subsequence34
s = [...s].filter((c) => hot.includes(c)).join("");35
for (const tar of targets) {36
if (isSubsequence(s, tar.repeat(k))) return tar;42
function getSubset(str) {44
for (const c of str) {45
res.push(...res.map((curStr) => curStr + c));47
return [...new Set(res)];50
function getPermutation(str) {52
for (const c of str) {54
for (const cur of res) {55
for (let i = 0; i <= cur.length; i++) {56
const curT = cur.substring(0, i) + c + cur.substring(i);62
return [...new Set(res)];65
function isSubsequence(s, t) {67
for (let j = 0; j < s.length; j++) {70
if (i === t.length) return true;