用 JavaScript 将数字映射到字符
假设我们有数字 12145。我们需要编写一个函数,该函数会根据以下规范将数字映射到英文字母。字母应根据 1 为基础的索引映射,例如 'a' 为 1,'b' 为 2,'c' 为 3 等。
将数字映射有几种方法。让我们以以上数字 121415 为例,
它可以映射为 −
12145->1,2,1,4,5->a,b,a,d,e
它也可以是 −
12145->12,1,4,5->l,a,d,e
它也可以是 −
12145->12,14,5->l,n,e
等等,但 12145 不能是 1、2、1、45,因为字母表中没有 45 的映射。因此,我们的函数应返回字母映射的所有排列的数组。
此代码如下 −
示例
const num = 12145; const mapToAlphabets = num => { const numStr = '' + num; let res = []; const shoveElements = (left, right) => { if (!left.length) { res.push(right.map(el => { return (+el + 9).toString(36); }).join('')); return; }; if(+left[0] > 0){ shoveElements(left.slice(1), right.concat(left[0])); }; if(left.length >= 2 && +(left.slice(0, 2)) <= 26){ shoveElements(left.slice(2), right.concat(left.slice(0, 2))); }; }; shoveElements(numStr, []); return res; } console.log(mapToAlphabets(num));
输出
控制台中的输出 −
[ 'abade', 'abne', 'aude', 'lade', 'lne' ]
广告