From c9b062a27109bc79e6dd015644509c745e696808 Mon Sep 17 00:00:00 2001 From: Jack Sangdahl Date: Thu, 18 Sep 2025 20:58:15 -0600 Subject: 3484. design spreadsheet --- design_spreadsheet.py | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 design_spreadsheet.py (limited to 'design_spreadsheet.py') diff --git a/design_spreadsheet.py b/design_spreadsheet.py new file mode 100644 index 0000000..bd26a29 --- /dev/null +++ b/design_spreadsheet.py @@ -0,0 +1,52 @@ +# 3484. Design Spreadsheet + +""" +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 10^5. note: if 'spreadsheetGetValue' references a cell that has +not been explicitly set using 'spreadsheetSetCell', its value is considered +to be 0. +""" + + +class Spreadsheet(object): + def __init__(self, rows): + """ + :type rows: int + """ + self.rows = rows + self.cells = {} + + def setCell(self, cell, value): + """ + :type cell: str + :type value: int + :rtype: None + """ + self.cells[cell] = value + + def resetCell(self, cell): + """ + :type cell: str + :rtype: None + """ + self.cells.pop(cell, None) + + def getValue(self, formula): + """ + :type formula: str + :rtype: int + """ + parts = formula[1:].split("+") + return sum(int(p) if p.isdigit() else self.cells.get(p, 0) for p in parts) + + +if __name__ == "__main__": + obj = Spreadsheet(3) + print(obj.getValue(formula="=5+7")) + obj.setCell(cell="A1", value=10) + print(obj.getValue(formula="=A1+6")) + obj.setCell(cell="B2", value=15) + print(obj.getValue(formula="=A1+B2")) + obj.resetCell(cell="A1") + print(obj.getValue(formula="=A1+B2")) -- cgit v1.2.3