1 min readJan 23, 2020
My 1st problem solution:
const solution = str => str.split('')
.reduce((prev, curr) => {
let lastLetter = prev.slice(-1)[0]
if (lastLetter && lastLetter.letter === curr) {
return [
...prev.slice(0, -1),
{
...lastLetter,
count: lastLetter.count + 1,
},
]
}
return [
...prev,
{ letter: curr, count: 1 },
]
}, [])
.map(val => val.letter.repeat(val.count > 2 ? 2 : val.count))
.join('')
2nd problem solution:
const solution = arr => {
const numbersMap = arr.reduce((prev, curr) => {
const sum = sumDigits(curr)
if (prev[sum]) {
prev[sum].push(curr)
return prev
}
return {
...prev,
[sum]: [curr],
}
}, {})
let sums = []
Object.values(numbersMap)
.map(numbers => {
if (numbers.length === 2) {
sums.push(sumNumbers(numbers))
}
if (numbers.length > 2) { // find two greatest
const greatest = numbers.sort()
.slice(-2)
sums.push(sumNumbers(greatest))
}
})
if (sums.length === 1) {
return sums[0]
}
if (sums.length > 1) {
return Math.max(...sums)
}
return -1
}
3rd problem solution — coming soon