LeetCode in Kotlin

820. Short Encoding of Words

Medium

A valid encoding of an array of words is any reference string s and array of indices indices such that:

Given an array of words, return the length of the shortest reference string s possible of any valid encoding of words.

Example 1:

Input: words = [“time”, “me”, “bell”]

Output: 10

Explanation: A valid encoding would be s = "time#bell#" and indices = [0, 2, 5].

words[0] = “time”, the substring of s starting from indices[0] = 0 to the next ‘#’ is underlined in “time#bell#”

words[1] = “me”, the substring of s starting from indices[1] = 2 to the next ‘#’ is underlined in “time#bell#”

words[2] = “bell”, the substring of s starting from indices[2] = 5 to the next ‘#’ is underlined in “time#bell#”

Example 2:

Input: words = [“t”]

Output: 2

Explanation: A valid encoding would be s = “t#” and indices = [0].

Constraints:

Solution

class Solution {
    private class Node {
        var nodes = arrayOfNulls<Node>(26)
    }

    private fun insert(node: Node, word: String): Boolean {
        var current: Node? = node
        val n = word.length
        var flag = false
        for (i in n - 1 downTo 0) {
            if (current!!.nodes[word[i].code - 'a'.code] == null) {
                current.nodes[word[i].code - 'a'.code] = Node()
                flag = true
            }
            current = current.nodes[word[i].code - 'a'.code]
        }
        return flag
    }

    fun minimumLengthEncoding(words: Array<String>): Int {
        var out = 0
        words.sortWith { a: String, b: String -> b.length - a.length }
        val node = Node()
        for (word in words) {
            if (insert(node, word)) {
                out += word.length + 1
            }
        }
        return out
    }
}
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