JSFiddle - React, Tailwind, and code Playground
by Sebastian
JavaScript
var regexp = /(.)\1+/gi; // pattern is: any sign followed by at least one the same sign
var permArr = [], usedChars = [];
// PERMUTATING FUNCTION
function permutate(str) {
var i, ch, chars = str.split("");
for (i = 0; i < chars.length; i++) {
ch = chars.splice(i, 1);
usedChars.push(ch);
if (chars.length == 0) permArr[permArr.length] = usedChars.join("");
permutate(chars.join(""));
chars.splice(i, 0, ch);
usedChars.pop();
}
return permArr;
}
// MAIN FUNCTION
function permAlone (str) {
filter = permutate(str);
counter = 0;
for (var j = 0; j < filter.length; j++) {
if (filter[j].match(regexp) === null) { // if pattern's match returns null ->there are no consecutive letters
counter++;
}
}
return counter;
}
// TEST
permAlone("abcdefa");
console.log(counter);