给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。
示例1:输入: pattern = "abba", str = "dog cat cat dog"输出: true示例 2:输入:pattern = "abba", str = "dog cat cat fish"输出: false示例 3:输入: pattern = "aaaa", str = "dog cat cat dog"输出: false示例 4:输入: pattern = "abba", str = "dog dog dog dog"输出: false
方法一:
/** * @param {string} pattern * @param {string} s * @return {boolean} */var wordPattern = function(pattern, s) { var ch2word = new Map() var word2ch = new Map() var arr = s.split(' ') if(pattern.length != arr.length) return false; for(let i=0;i<pattern.length;i++){ if(ch2word.has(pattern[i])==true){ if(ch2word.get(pattern[i])!=arr[i]){ return false } }else{ ch2word.set(pattern[i],arr[i]) } if(word2ch.has(arr[i])==true){ if(word2ch.get(arr[i])!=pattern[i]) return false }else{ word2ch.set(arr[i],pattern[i]) } } return true};
方法二:
var wordPattern = function(pattern, s) { const a = s.split(' ') if (pattern.length !== a.length) return false for(let i = 0; i < pattern.length; i++) if (pattern.indexOf(pattern[i]) !== a.indexOf(a[i])) return false return true};