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:
1 <= pattern.length <= 300pattern contains only lower-case English letters.1 <= s.length <= 3000s contains only lowercase English letters and spaces ' '.s does not contain any leading or trailing spaces.s are separated by a single space.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
}
}