universal lucky stringg
by Shridhar Baddur
JavaScript
function solution(S) {
var charList = {};
for (i = 0; i < S.length; i++) {
chr = S.charAt(i);
if (charList[chr]) {
charList[chr]++;
} else {
charList[chr] = 1;
}
}
return (displayResult(charList, S))
}
function displayResult(charList, S) {
var flag = true;
var temp;
var count = 0;
var sum = 0;
var ct = 0
var dif = 0
Object.keys(charList).forEach(function(x) {
sum = sum + parseInt(charList[x]);
if (temp && temp !== charList[x]) {
ct++;
dif = parseInt(temp) - parseInt(charList[x]);
dif = (sum === S.length) && (dif < 1) ? (-dif) : dif;
if (!count && (dif == 1 || charList[x] == 1)) {
count++;
} else {
flag = false;
}
if (charList[x] != 1 || dif < 1) {
temp = charList[x];
}
} else {
temp = charList[x];
}
if (sum === S.length && dif == 1 && ct <= 2) {
flag = true;
}
});
if (flag) {
return 'YES';
} else {
return 'NO';
}
}