js 字符串相乘以及数字转36进制

84 阅读1分钟

纯属个人记录,每日总要写几遍,以免老年痴呆,dp还是比较艰难,希望能自己坚持到最后一步

字符串相乘

function multiply(a, b) {
  let [m, n] = [a.length, b.length];
  let res = new Array(m + n).fill(0);
  for (let i = m - 1; i >= 0; i--) {
    for (let j = n - 1; j >= 0; j--) {
      let pos = i + j;
      let pos1 = pos + 1;
      let sum = Number(a[i]) * Number(b[j]) + res[pos1];
      res[pos1] = sum % 10;
      res[pos] = Math.floor(sum / 10) + res[pos];
    }
  }
  while (res[0] == 0) {
    res.shift();
  }
  return res.length == 0 ? '0' : res.join('');
}
multiply('455', '789');

数字转36进制

function to36(num, radix = 36) {
  if (num == 0) return '';
  let base = '0123456789abcdefghijklmnopqrstuvwxyz';
  let res = '';
  while (num > 0) {
    let flag = num % radix;
    res = base[flag] + res;
    num = Math.floor(num / radix);
  }
  return res;
}
to36(360); // a0