Given a pattern
and a string str
, find if str
follows the same pattern.
Here follow means a full match, such that there is a bijection between a letter in pattern
and a non-empty word in str
.
Examples:
pattern = "abba"
, str = "dog cat cat dog"
should return true.
pattern = "abba"
, str = "dog cat cat fish"
should return false.
pattern = "aaaa"
, str = "dog cat cat dog"
should return false.
pattern = "abba"
, str = "dog dog dog dog"
should return false.
Notes:You may assume pattern
contains only lowercase letters, and str
contains lowercase letters separated by a single space.
这道题和205神像,直接写方法了:
/**
* @param {string} pattern
* @param {string} str
* @return {boolean}
*/
var wordPattern = function(pattern, str) {
var word = "";
var count = 0;
var patternMap = {};
var wordMap = {};
str += " ";
var num = str.length;
for (var i = 0;i < num;i++) {
if (str[i]!==" ") {
word += str[i];
} else {
if (patternMap[pattern[count]]!==wordMap[word])
return false;
if (patternMap[pattern[count]]===undefined) {
patternMap[pattern[count]] = count;
wordMap[word] = count;
}
word = "";
count++;
}
}
if (count!==pattern.length)
return false;
return true;
};