DEV Community

loading...

Discussion on: Daily Challenge #259 - Duplicate Encoder

Collapse
jpantunes profile image
JP Antunes

A simple (and somewhat slow) JS solution:

const encodeDuplicate = str => {
    //make a frequency map
    const freqMap = [...str.toLowerCase()].reduce((acc, val) => {
        acc[val] = acc[val] + 1 || 1;
        return acc;
    }, {});
    //return the mapped str 
    return [...str.toLowerCase()]
            .map(e => freqMap[e] == 1 ? '(' : ')')
            .join('');
}
Collapse
miketalbot profile image
Mike Talbot

Not that slow :) Better than anything that searched/scanned or did an indexOf for sure! You know I like that || 1 as well, I always do (acc[val] || 0) + 1 - but that is much neater. Borrowing that.

Collapse
nam288 profile image
Nam H. Le

Same to me || 0