LeetCode in Kotlin

677. Map Sum Pairs

Medium

Design a map that allows you to do the following:

Implement the MapSum class:

Example 1:

Input

[“MapSum”, “insert”, “sum”, “insert”, “sum”] [[],

[“apple”, 3], [“ap”], [“app”, 2], [“ap”]]

Output: [null, null, 3, null, 5]

Explanation:

MapSum mapSum = new MapSum(); 
mapSum.insert("apple", 3); 
mapSum.sum("ap"); // return 3 (apple = 3) 
mapSum.insert("app", 2); 
mapSum.sum("ap"); // return 5 (apple + app = 3 + 2 = 5)

Constraints:

Solution

class MapSum {
    internal class Node {
        var `val`: Int = 0
        var child: Array<Node?> = arrayOfNulls(26)
    }

    private val root: Node = Node()

    fun insert(key: String, `val`: Int) {
        var curr: Node? = root
        for (c in key.toCharArray()) {
            if (curr!!.child[c.code - 'a'.code] == null) {
                curr.child[c.code - 'a'.code] = Node()
            }
            curr = curr.child[c.code - 'a'.code]
        }
        curr!!.`val` = `val`
    }

    private fun sumHelper(root: Node?): Int {
        var o = 0
        for (i in 0..25) {
            if (root!!.child[i] != null) {
                o += root.child[i]!!.`val` + sumHelper(root.child[i])
            }
        }
        return o
    }

    fun sum(prefix: String): Int {
        var curr: Node? = root
        for (c in prefix.toCharArray()) {
            if (curr!!.child[c.code - 'a'.code] == null) {
                return 0
            }
            curr = curr.child[c.code - 'a'.code]
        }
        val sum = curr!!.`val`
        return sum + sumHelper(curr)
    }
}

/*
 * Your MapSum object will be instantiated and called as such:
 * var obj = MapSum()
 * obj.insert(key,`val`)
 * var param_2 = obj.sum(prefix)
 */
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