LeetCode in Kotlin

290. Word Pattern

Easy

Given a pattern and a string s, find if s follows the same pattern.

Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in s.

Example 1:

Input: pattern = “abba”, s = “dog cat cat dog”

Output: true

Example 2:

Input: pattern = “abba”, s = “dog cat cat fish”

Output: false

Example 3:

Input: pattern = “aaaa”, s = “dog cat cat dog”

Output: false

Constraints:

Solution

class Solution {
    fun wordPattern(pattern: String, s: String): Boolean {
        val map: MutableMap<Char, String> = HashMap()
        val words = s.split(" ".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
        if (words.size != pattern.length) {
            return false
        }
        for (i in 0 until pattern.length) {
            if (!map.containsKey(pattern[i])) {
                if (map.containsValue(words[i])) {
                    return false
                }
                map[pattern[i]] = words[i]
            } else {
                if (words[i] != map[pattern[i]]) {
                    return false
                }
            }
        }
        return true
    }
}