给定一种规律 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
};