290.单词规律

2020-06-15
单词规律

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

这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 

str 中的每个非空单词之间存在着双向连接的对应规律。

题解:
思路1:哈希表
/**
 * @param {string} pattern
 * @param {string} str
 * @return {boolean}
 */
var wordPattern = function (pattern, str) {
  let hash1 = {}; // hash1存pattern中每个字符对应的单词
  let hash2 = {}; // hash2中存每个单词对应的字符
  let arr = str.split(' ');
  if (pattern.length !== arr.length) return false; // 如果长度不一样 肯定是false
  for (let i = 0; i < pattern.length; i++) {
    if (!hash1[pattern[i]] && !hash2[arr[i]]) { // 如果两个hash中都没有值 说明这个字符和单词是新出现的
      hash1[pattern[i]] = arr[i]; // 将它们加入到两个hash中
      hash2[arr[i]] = pattern[i];
    } // 只要两个hash中有一个有值 说明这个单词或者这个字符以前出现过
    // 出现过的字符 如果两个表中不能一一对应 就说明不满足单词规律
    else if (hash1[pattern[i]] !== arr[i] || hash2[arr[i]] !== pattern[i]) return false;
  }
  return true;
};

 

posted @ 2020-06-15 09:42  蓝小胖纸  阅读(152)  评论(0编辑  收藏  举报