← All problems

3484. Design Spreadsheet

MediumOpen on LeetCodeProblem statement

Problem Statement

3484. Design Spreadsheet

Medium


A spreadsheet is a grid with 26 columns (labeled from 'A' to 'Z') and a given number of rows. Each cell in the spreadsheet can hold an integer value between 0 and 105.

Implement the Spreadsheet class:

Note: If getValue references a cell that has not been explicitly set using setCell, its value is considered 0.

 

Example 1:

Input:
["Spreadsheet", "getValue", "setCell", "getValue", "setCell", "getValue", "resetCell", "getValue"]
[[3], ["=5+7"], ["A1", 10], ["=A1+6"], ["B2", 15], ["=A1+B2"], ["A1"], ["=A1+B2"]]

Output:
[null, 12, null, 16, null, 25, null, 15]

Explanation

Spreadsheet spreadsheet = new Spreadsheet(3); // Initializes a spreadsheet with 3 rows and 26 columns
spreadsheet.getValue("=5+7"); // returns 12 (5+7)
spreadsheet.setCell("A1", 10); // sets A1 to 10
spreadsheet.getValue("=A1+6"); // returns 16 (10+6)
spreadsheet.setCell("B2", 15); // sets B2 to 15
spreadsheet.getValue("=A1+B2"); // returns 25 (10+15)
spreadsheet.resetCell("A1"); // resets A1 to 0
spreadsheet.getValue("=A1+B2"); // returns 15 (0+15)

 

Constraints:

Java

Source file
class Spreadsheet {
    int[][] cells;

    public Spreadsheet(int rows) {
        cells = new int[rows][27];
    }

    public void setCell(String cell, int value) {
        int col = cell.charAt(0) - 'A';
        int row = Integer.parseInt(cell.substring(1));
        cells[row][col] = value;
    }

    public void resetCell(String cell) {
        int col = cell.charAt(0) - 'A';
        int row = Integer.parseInt(cell.substring(1));
        cells[row][col] = 0;
    }

    public int getValue(String formula) {
        formula = formula.substring(1);
        String[] expr = formula.split("\\+");
        int val1, val2;
        if (Character.isAlphabetic((int) (expr[0].charAt(0)))) {
            int col = expr[0].charAt(0) - 'A';
            int row = Integer.parseInt(expr[0].substring(1));
            val1 = cells[row][col];
        } else
            val1 = Integer.parseInt(expr[0]);
        if (Character.isAlphabetic((int) (expr[1].charAt(0)))) {
            int col = expr[1].charAt(0) - 'A';
            int row = Integer.parseInt(expr[1].substring(1));
            val2 = cells[row][col];
        } else
            val2 = Integer.parseInt(expr[1]);
        return val1 + val2;
    }
}

/**
 * Your Spreadsheet object will be instantiated and called as such:
 * Spreadsheet obj = new Spreadsheet(rows);
 * obj.setCell(cell,value);
 * obj.resetCell(cell);
 * int param_3 = obj.getValue(formula);
 */