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`));