LeetCode每日一题,290. Word Pattern
先看题目描述
大意就是给定一个模式串 pattern 和一个字符串 s,让我们判断 s 是否能匹配 pattern
算法和思路
哈希表
我们可以使用哈希表,以 pattern 中的字母作为键,s 中的字符串作为值,来判断是否能匹配
算法流程
- 将 s 根据空格分割为一个字符串数组 ss,初始化一个哈希表 map,判断 ss 的长度与 pattern 的长度是否相等,不相等的话则直接返回 false
- 用指针 i 来遍历 pattern 和 ss
- 将 pattern.charAt(i) 作为 key,若 map 的所有键中 key 不存在,再去判断 map 的所有 value 中是否存在 ss[i],若存在则直接返回 false,不存在的话就将 key 和 ss[i] 作为键值对放入 map 中;若 map 的所有键中存在 key,则判断该键所对应的值是否与 ss[i] 相等,若不相等的话则直接返回 false
- 若最后遍历结束后也没返回,说明到达终态,s 与 pattern 能匹配,返回 true
算法源码
1 | class Solution { |
下面是题解的代码,使用了两个哈希表,时间复杂度要低些
1 | class Solution { |