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; };