• + 0 comments

    My answer with Typescript

    function gemstones(arr: string[]): number {
        // sort stones by length
        let stones = arr.sort((a, b) => a.length - b.length)
        // take the smallest stone, get collection of gems inside it
        let gems = Array.from(new Set<string>(stones.shift().split('')))
        // the rest of stones should have gems to be count as gemstone.
        return gems.filter(gem => stones.every(stone => stone.includes(gem))).length
    }