Skip to content

Instantly share code, notes, and snippets.

@trafficinc
Created March 14, 2019 13:47
Show Gist options
  • Save trafficinc/9411861fb659291d35f17a9387539650 to your computer and use it in GitHub Desktop.
Save trafficinc/9411861fb659291d35f17a9387539650 to your computer and use it in GitHub Desktop.
Word Pattern Algo
var wordPattern = function(pattern, str) {
var letters = pattern.split('');
var symbols = {};
var reverseSymbols = {};
var words = str.split(' ');
if (letters.length != words.length) return false;
for (var i = 0; i < letters.length; ++i) {
var word = words[i];
var letter = letters[i];
var symbol = symbols[letter];
if (symbol === undefined) {
symbols[letter] = word;
symbol = word;
if (reverseSymbols[word]){
return false;
}
reverseSymbols[word] = letter;
}
//console.log(symbol, word, letter);
if (symbol != word) return false;
}
return true;
};
// true
// var pattern = "abba";
// var str = "dog cat cat dog";
// false
// var pattern = "abba";
// var str = "dog cat cat fish";
//false
// var pattern = "aaaa";
// var str = "dog cat cat dog";
//false
var pattern = "abba";
var str = "dog dog dog dog";
console.log( wordPattern(pattern, str) );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment