Skip to content

Instantly share code, notes, and snippets.

@andersonleite
Created July 16, 2019 14:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andersonleite/4a9d4287f48ec514bae427bf1c091f3c to your computer and use it in GitHub Desktop.
Save andersonleite/4a9d4287f48ec514bae427bf1c091f3c to your computer and use it in GitHub Desktop.
Determine whether it follows the sequence given in the patterns array
// Given an array strings, determine whether it follows the sequence given in the patterns array. In other words, there should be no i and j for which strings[i] = strings[j] and patterns[i] ≠ patterns[j] or for which strings[i] ≠ strings[j] and patterns[i] = patterns[j].
function areFollowingPatterns(strings, patterns) {
let sHash = {}
let pHash = {}
let counter = 0
let pat1 = ''
let pat2 = ''
for(let i=0; i<strings.length; i++){
if(sHash[strings[i]]===pHash[patterns[i]]){
counter++
if(!sHash[strings[i]]){
sHash[strings[i]] = counter
}
if(!pHash[patterns[i]]){
pHash[patterns[i]] = counter
}
pat1 += sHash[strings[i]]
pat2 += pHash[patterns[i]]
}else{
return false
}
if(pat1 !== pat2){return false}
}
return true
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment