$DifferentAlgorithmPalindrome
by mtambulut
JavaScript
// Complete the gameOfThrones function below.
function gameOfThrones(s) {
var palindromCount = 0;
var singleCharacter = 0;
var doubleCharacter = false;
/* Purpose of regular expressions is removing space an unnecessary sign and also removing * case sensitivity by using toLowerCase method for catching clean expression
*/
var regex = /[^A-Za-z0-9]/g;
var cleanString = s.toLowerCase().replace(regex, '');
/* Purpose of allCharacter variable is to be able to push different character in one array
*/
var allCharacter = cleanString.split('').filter((v, i, a) => a.indexOf(v) === i);
/* We can find how many times clean expression is used by all character loop.
* We understand if it makes any palindrome.
*/
for (var y = 0; y < allCharacter.length; y++) {
// Character of in loop specifies how many characters are in the array.
let characterCount = cleanString.match(new RegExp(allCharacter[y], "g")).length;
if (characterCount == 1)
singleCharacter++;
if (characterCount % 2 == 0)
doubleCharacter = true;
if (characterCount > 1 && characterCount % 2 == 1)
palindromCount++;
}
// We need odd and even characters to create a palindrome
if (singleCharacter == 1 && !palindromCount && doubleCharacter)
return "YES"
else if (!singleCharacter && palindromCount == 1 && doubleCharacter)
return "YES"
return "NO"
}
document.write(gameOfThrones("aaabbbb"),"---");
document.write(gameOfThrones("cdefghmnopqrstuvw"),"---");
document.write(gameOfThrones("cdcdcdcdeeeef"),"---");
document.write(gameOfThrones("acc"));