LeetCode in Kotlin

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:

Solution

@Suppress("unused")
class Spreadsheet(rows: Int) {
    private val data: MutableMap<String, Int> = HashMap<String, Int>()

    fun setCell(cell: String, value: Int) {
        data.put(cell, value)
    }

    fun resetCell(cell: String) {
        data.put(cell, 0)
    }

    fun getValue(formula: String): Int {
        val index = formula.indexOf('+')
        val left = formula.substring(1, index)
        val right = formula.substring(index + 1)
        val x =
            if (Character.isLetter(left[0])) {
                data.getOrDefault(left, 0)
            } else {
                left.toInt()
            }
        val y =
            if (Character.isLetter(right[0])) {
                data.getOrDefault(right, 0)
            } else {
                right.toInt()
            }
        return x + y
    }
}

/*
 * Your Spreadsheet object will be instantiated and called as such:
 * var obj = Spreadsheet(rows)
 * obj.setCell(cell,value)
 * obj.resetCell(cell)
 * var param_3 = obj.getValue(formula)
 */
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy