290. 单词规律

290. 单词规律icon-default.png?t=N2N8https://leetcode.cn/problems/word-pattern/

难度简单552

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

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

示例1:

输入: pattern = "abba", s = "dog cat cat dog"
输出: true

示例 2:

输入:pattern = "abba", s = "dog cat cat fish"
输出: false

示例 3:

输入: pattern = "aaaa", s = "dog cat cat dog"
输出: false

提示:

  • 1 <= pattern.length <= 300
  • pattern 只包含小写英文字母
  • 1 <= s.length <= 3000
  • s 只包含小写英文字母和 ' '
  • s 不包含 任何前导或尾随对空格
  • s 中每个单词都被 单个空格 分隔
/**
 * @param {string} pattern
 * @param {string} s
 * @return {boolean}
 */
const pattern = "abba",
  s = "dog cat cat house";
var wordPattern = function (pattern, s) {
  const map1 = new Map();
  const map2 = new Map();
  const arrs = s.split(" ");
  if (pattern.length != arrs.length) {
    return false;
  }
  console.log(arrs);
  for (const [i, item] of arrs.entries()) {
    const k = pattern[i];
    if (
      (map1.has(item) && map1.get(item) != k) ||
      (map2.has(k) && map2.get(k) !== item)
    )
      return false;
    map1.set(item, k); //pattern中的元素只有两种,s中有三种不同的单词,循环录入时,a会被覆盖赋给house
    map2.set(k, item); //翻转录入时,s中的不相同的值不会被覆盖,因为是作为key被录入的,但是其value会出现相同的值,而当一个value有两个不同key时,这个pattern就没有被遵守
  }
  console.log(map1);
  console.log(map2);
  return true;
};
wordPattern(pattern, s);

你可能感兴趣的:(算法,leetcode)