function
wordPattern(pattern, s) {
const wordToPattern =
new
Map();
let patternIndex = 0;
let temp =
""
;
let patternStr =
""
;
let wordToPatternIndex = -1;
for
(let i = 0; i < s.length; i++) {
if
(s[i] ===
' '
) {
if
(temp.length && !wordToPattern.has(temp)) {
wordToPatternIndex++;
wordToPattern.set(temp, wordToPatternIndex);
}
if
(wordToPattern.has(temp)) {
patternStr += String.fromCharCode(97 + wordToPattern.get(temp));
}
temp =
""
;
}
else
{
temp += s[i];
}
}
if
(temp.length && !wordToPattern.has(temp)) {
wordToPatternIndex++;
wordToPattern.set(temp, wordToPatternIndex);
}
if
(wordToPattern.has(temp)) {
patternStr += String.fromCharCode(97 + wordToPattern.get(temp));
}
const patternToIndex =
new
Map();
patternIndex = -1;
let patternStrFinal =
""
;
for
(let i = 0; i < pattern.length; i++) {
if
(!patternToIndex.has(pattern[i])) {
patternIndex++;
patternToIndex.set(pattern[i], patternIndex);
}
if
(patternToIndex.has(pattern[i])) {
patternStrFinal += String.fromCharCode(97 + patternToIndex.get(pattern[i]));
}
}
return
patternStrFinal === patternStr;
}
const pattern =
"abba"
;
const s =
"geeks for for geeks"
;
const ans = wordPattern(pattern, s);
console.log(ans ?
"true"
:
"false"
);