missingLetters - Interview question of the week from rendezvous with cassidoo
Simple, no-frills solution to this week’s question.
Interview question of the week
This week’s question: Write a function that takes an array of consecutive, increasing letters as input, and returns any missing letters in the array between the first and last letter.
Example:
> missingLetters(['a','b','c','d','f']) > ['e'] > missingLetters(['a','b','c','d','e','h','i','j','k','l','m','n','o','p','q','r','s','t','u','w','x','y','z']) > ['f','g','v']
My solution
#mocha
function missingLetters(arr) { if (arr.length <= 1) return []; let [head, ...tail] = arr; let prev = head.charCodeAt(0); const result = []; for (const item of tail) { const curr = item.charCodeAt(0); for (let i = 1; i < curr - prev; i++) { result.push(String.fromCharCode(prev + i)); } prev = curr; } return result; } mocha.setup("bdd"); const assert = chai.assert; const expect = chai.expect; const should = chai.should(); describe("Given the examples from the question", () => { const expectations = [ { input: ["a", "b", "c", "d", "f"], output: ["e"], }, { input: [ "a", "b", "c", "d", "e", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "w", "x", "y", "z", ], output: ["f", "g", "v"], }, ]; expectations.forEach(({ input, output }) => { it(`should return ${JSON.stringify(output)} for the input ${JSON.stringify( input )}`, () => { // Act const actual = missingLetters(input); // Assert Array.from(actual).should.deep.equal(output); }); }); }); mocha.run();