/**
* @param {string} digits
* @return {string[]}
*/
var letterCombinations = function (s) {
if (!s.length) return [];
const char = ['abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz'];
let res = [''];
for (let a of s) {
let now = [];
for (let b of char[a - 2])
for (let c of res) now.push(c + b);
res = now;
}
return res;
};
递归
考点:卡迪尔积
实现一个简单的卡迪尔积
var a = ['a', 'b', 'c'], b = ['e', 'f', 'g'];
// a * b = res ? 求解这两个集合的笛卡尔积
var res = ['ae', 'af', 'ag', 'be', 'bf', 'bg', 'ce', 'cf', 'cg'];
function flatMap(fn, array) {
return array.map(fn).flat(1);
}
flatMap(item1 => flatMap(item2 => item1 + item2, a), b);