290. 单词规律

给定一种规律 pattern  和一个字符串  str ,判断 str 是否遵循相同的规律。

这里的   遵循   指完全匹配,例如, pattern  里的每个字母和字符串  str  中的每个非空单词之间存在着双向连接的对应规律。

示例 1:

1
2
输入: pattern = "abba", str = "dog cat cat dog"
输出: true

示例  2:

1
2
输入:pattern = "abba", str = "dog cat cat fish"
输出: false

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* @param {string} pattern
* @param {string} s
* @return {boolean}
*/
var wordPattern = function (pattern, s) {
let arr = s.split(" ");
if (pattern.length !== arr.length) return false;
let map = new Map();
for (let i = 0; i < pattern.length; i++) {
if (map.has(pattern[i])) {
if (map.get(pattern[i]) !== arr[i]) {
return false;
}
} else {
map.set(pattern[i], arr[i]);
}
}
return new Set([...map.values()]).size === map.size;
};