290.单词规律
var wordPattern = function (pattern, s) {
let wordArr = s.split(' ')
if (wordArr.length !== pattern.length) {
return false
}
let map = {}
for (let i = 0; i < pattern.length; i++) {
let char = pattern.charAt(i)
if (map[char]) {
map[char].push(i)
} else {
map[char] = [i]
}
}
let checkedWords = []
let indexesArr = Object.values(map)
for (let i = 0; i < indexesArr.length; i++) {
let indexes = indexesArr[i]
let curWord = wordArr[indexes[0]]
if (checkedWords.includes(curWord)) {
return false
}
for (let j = 1; j < indexes.length; j++) {
if (wordArr[indexes[j]] !== curWord) {
return false
}
}
checkedWords.push(curWord)
}
return true
};
var wordPattern = function (pattern, s) {
let word2char = new Map()
let char2word = new Map()
let words = s.split(' ')
if (words.length !== pattern.length) {
return false
}
for (let i = 0; i < words.length; i++) {
let word = words[i]
let char = pattern.charAt(i)
if (word2char.has(word) && word2char.get(word) !== char) {
return false
}
if (char2word.has(char) && char2word.get(char) !== word) {
return false
}
word2char.set(word, char)
char2word.set(char, word)
}
return true
}
console.log(wordPattern("abba", "dog constructor constructor dog"))