LeetCode in Kotlin

2103. Rings and Rods

Easy

There are n rings and each ring is either red, green, or blue. The rings are distributed across ten rods labeled from 0 to 9.

You are given a string rings of length 2n that describes the n rings that are placed onto the rods. Every two characters in rings forms a color-position pair that is used to describe each ring where:

For example, "R3G2B1" describes n == 3 rings: a red ring placed onto the rod labeled 3, a green ring placed onto the rod labeled 2, and a blue ring placed onto the rod labeled 1.

Return the number of rods that have all three colors of rings on them.

Example 1:

Input: rings = “B0B6G0R6R0R6G9”

Output: 1

Explanation:

Thus, the number of rods with all three colors is 1.

Example 2:

Input: rings = “B0R0G0R9R0B0G0”

Output: 1

Explanation:

Thus, the number of rods with all three colors is 1.

Example 3:

Input: rings = “G4”

Output: 0

Explanation: Only one ring is given. Thus, no rods have all three colors.

Constraints:

Solution

class Solution {
    fun countPoints(rings: String): Int {
        val redHashMap: MutableMap<Int, Int> = HashMap()
        val greenHashMap: MutableMap<Int, Int> = HashMap()
        val blueHashMap: MutableMap<Int, Int> = HashMap()
        run {
            var i = 0
            while (i <= rings.length - 2) {
                val charOne = rings[i]
                val charTwo = rings[i + 1]
                if (charOne == 'R') {
                    redHashMap[Character.getNumericValue(charTwo)] = 123
                } else if (charOne == 'G') {
                    greenHashMap[Character.getNumericValue(charTwo)] = 123
                } else {
                    blueHashMap[Character.getNumericValue(charTwo)] = 123
                }
                i = i + 2
            }
        }
        var result = 0
        for (i in 0..9) {
            if (redHashMap.containsKey(i) &&
                greenHashMap.containsKey(i) &&
                blueHashMap.containsKey(i)
            ) {
                result++
            }
        }
        return result
    }
}