Back to all solutions

#2194 - Cells in a Range on an Excel Sheet

Problem Description

A cell (r, c) of an excel sheet is represented as a string "<col><row>" where:

  • <col> denotes the column number c of the cell. It is represented by alphabetical letters.
    • For example, the 1st column is denoted by 'A', the 2nd by 'B', the 3rd by 'C', and so on.
  • <row> is the row number r of the cell. The rth row is represented by the integer r.
    • You are given a string s in the format "<col1><row1>:<col2><row2>", where <col1> represents the column c1, <row1> represents the row r1, <col2> represents the column c2, and <row2> represents the row r2, such that r1 <= r2 and c1 <= c2.

Return the list of cells (x, y) such that r1 <= x <= r2 and c1 <= y <= c2. The cells should be represented as strings in the format mentioned above and be sorted in non-decreasing order first by columns and then by rows.

Solution

/**
 * @param {string} s
 * @return {string[]}
 */
var cellsInRange = function(s) {
  const result = [];
  const startCol = s.charCodeAt(0);
  const endCol = s.charCodeAt(3);
  const startRow = parseInt(s[1], 10);
  const endRow = parseInt(s[4], 10);

  for (let col = startCol; col <= endCol; col++) {
    for (let row = startRow; row <= endRow; row++) {
      result.push(String.fromCharCode(col) + row);
    }
  }

  return result;
};