Гармоническая строка
Назовем строку гармоничным,если в строке количество символов b не превышает количество символов a,количество c не превышает b и так далее.
Пример гармонической строки "aaaabbbcc"
Написать solution функцию,которая проверяет строка гармоническая или нет.
Проверял найти сумму строки с помощью charCodeAt и проверять она простая или составная,но не всегда получается правильным
function solution(x){
var s = 0
for (var i = 0; i < x.length; i++) {
s += x[i].charCodeAt(0)
}
return s%2!=0
}
console.log(solution("bbbaacdafe")) //true
console.log(solution("aaaabbbc")) //true
console.log(solution("aabbb")) //false
console.log(solution("aaabbb")) //true
console.log(solution("aabbbcccccc")) //false
console.log(solution("bbc")) //false
Ответы (2 шт):
Автор решения: Александр Лесив
→ Ссылка
function solution(str) {
str = str.split('').sort().join('');
//создаем объект, в который записываем коды символов и количество их повторений
const done = {};
for (const char of str) {
const charCode = char.charCodeAt(0);
charCode in done ? done[charCode] += 1: done[charCode] = 1
};
let prevCount = Infinity;
let nextCharCode = 'a'.charCodeAt(0);
for (let charCode in done) {
// Если количество повторений предыдущего символа больше за количество повторений следующего
// Или код следующего символа больше за код предыдущего не на 1
if(done[charCode] > prevCount || charCode != nextCharCode++) {
return false
} else {
prevCount = done[charCode];
prevCharCode = charCode;
}
}
return true;
};
console.log(solution("bbbaacdafe")) //true
console.log(solution("aaaabbbc")) //true
console.log(solution("aabbb")) //false
console.log(solution("aaabbb")) //true
console.log(solution("aabbbcccccc")) //false
console.log(solution("bbc")) // false
Автор решения: Alexander Lonberg
→ Ссылка
function solution(string) {
const codeCount = new Map()
string.split('').forEach((s) => {
let code = s.charCodeAt(0)
let c = codeCount.get(code)
codeCount.set(code, c ? ++c : 1)
})
const array = [...codeCount.entries()].sort(([a], [b]) => a - b)
let i = array.length - 1
while (i) {
if (array[i][1] > array[--i][1]) {
return false
}
}
return true
}
console.log(solution("bbbaacdafe"))
console.log(solution("aaaabbbc"))
console.log(solution("aabbb"))
console.log(solution("aaabbb"))
console.log(solution("aabbbcccccc"))
console.log(solution("bbc"))