在 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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP