leetcode刷题笔记290题 单词规律
源地址:290. 单词规律
问题描述:
给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。
这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。
示例1:
输入: pattern = "abba", str = "dog cat cat dog"
输出: true
示例 2:输入:pattern = "abba", str = "dog cat cat fish"
输出: false
示例 3:输入: pattern = "aaaa", str = "dog cat cat dog"
输出: false
示例 4:输入: pattern = "abba", str = "dog dog dog dog"
输出: false
说明:
你可以假设 pattern 只包含小写字母, str 包含了由单个空格分隔的小写字母。
//利用map解决映射问题
//1.全映射 AB两个集大小相同
//2.单射 即A中元素必有且仅有一个B元素与之对应,转化为编程逻辑,即A中元素对应B中元素一一对应。通过检查两个映射实现。
import scala.collection.mutable
object Solution {
def wordPattern(pattern: String, s: String): Boolean = {
val str = s.split(" ")
if (pattern.length != str.length) return false
val ps = mutable.HashMap[Char, String]()
val sp = mutable.HashMap[String, Char]()
for (i <- 0 to pattern.length-1) {
val p = pattern(i)
val w = str(i)
println("p: " + p)
println("w: " + w)
if (ps.contains(p) == true && ps(p) != w) return false
ps(p) = w
if (sp.contains(w) == true && sp(w) != p) return false
sp(w) = p
}
return true
}
}