All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0301_0400.s0394_decode_string.Solution.scala Maven / Gradle / Ivy

package g0301_0400.s0394_decode_string

// #Medium #Top_100_Liked_Questions #String #Stack #Recursion #Level_1_Day_14_Stack #Udemy_Strings
// #Big_O_Time_O(n)_Space_O(n) #2023_11_09_Time_449_ms_(50.00%)_Space_56.5_MB_(45.45%)

object Solution {
    def decodeString(s: String): String = {
        val brStack = scala.collection.mutable.Stack[Int]()
        val stStack = scala.collection.mutable.Stack[String]()
        stStack.push("")
        var i = 0
        while (i < s.length) {
            if (s(i) - '0' <= 9) {
                var j = ""
                while (s(i) != '[') {
                    j += s(i)
                    i += 1
                }
                brStack.push(j.toInt)
                stStack.push("")
            } else if (s(i) == ']') {
                val o = brStack.pop()
                val o1 = stStack.pop()
                var r = ""
                for (_ <- 0 until o) r += o1
                stStack.push(stStack.pop() + r)
            } else {
                stStack.push(stStack.pop() + s(i))
            }
            i += 1
        }
        stStack.pop()
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy