在 JavaScript 中將數字字串編碼為 0 和 1 的字串


問題

我們需要編寫一個 JavaScript 函式,該函式接收一個表示十進位制數字的字串作為輸入。

我們的函式應該根據以下規則將此十進位制數轉換為/編碼為二進位制。

對於 n 的每個數字 d

  • 令 k 為 d 的位數
  • 我們寫 k-1 次數字 0,然後是數字 1
  • 我們將數字 d 寫成二進位制字串,其中最右邊的位是最不重要的位
  • 最後,我們將 b) 和 c) 的結果連線起來得到 d 的編碼

最後,我們將為 n 的數字獲得的所有結果連線起來。

因此,將 2 編碼為 0110,將 3 編碼為 0111

示例

以下是程式碼 -

const str = '77338855';
const encodeNumString = (str = '') => {
   const buildarray = (string = '') => {
      let n = string.split(''), res = '';
      n.forEach(x => {
         let num = Number(x).toString(2);
         num = '0'.repeat(num.length -1) + '1' + num;
         res += num;
      });
      return res;
   }
   const arr = [];
   let res = "";
   for (let i = 0; i < 10; i++){
      arr.push(buildarray(String(i)));
   };
   while (str.length){
      for (let i = 0; i < 10; i++) {
         if (str.startsWith(arr[i])) {
            res += String(i);
            str = str.slice(arr[i].length);
            break;
         }
      }
   }
   return res;
};
console.log(encodeNumString(str));

輸出

以下是控制檯輸出 -

001111001111011101110001100000011000001101001101

更新於: 2021年4月19日

268 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.