用 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' ]

更新時間:2020-10-12

975 次瀏覽

開啟你的 職業

完成該課程獲得認證

開始
廣告