JSFiddle - React, Tailwind, and code Playground

by JR McEntee

HTML

<pre id="output"></pre>

JavaScript

function runLengthEncode(str) {
  if (!str) {
    return null;
  }

  let curr = str[0];
  let currCount = 1;
  let result = '';

  for (let i = 1; i < str.length; i++) {
    if (curr !== str[i] || currCount === 255) {
      result += `${currCount}${curr}`;
      curr = str[i];
      currCount = 0;
    }

    currCount++;
  }

  return result + `${currCount}${curr}`;
}

function out() {
  const args = Array.prototype.slice.call(arguments, 0);
  document.getElementById('output').innerHTML += args.join(" ") + "\n";
}

out(runLengthEncode('a'));
out(runLengthEncode('ab'));
out(runLengthEncode('aabbb'));
out(runLengthEncode('aabbbccchhhhhhaaaaaaaiiiiiii'));
out(runLengthEncode(`${'a'.repeat(260)}bbbbhhhhh`));