leetcode刷题笔记290题 单词规律

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
    }
}
posted @ 2020-11-17 12:13  ganshuoos  阅读(106)  评论(0编辑  收藏  举报