-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathword-pattern.js
More file actions
80 lines (62 loc) · 2.26 KB
/
word-pattern.js
File metadata and controls
80 lines (62 loc) · 2.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/*
Given a pattern and a string s, find if s 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 s.
Example 1:
Input: pattern = "abba", s = "dog cat cat dog"
Output: true
Example 2:
Input: pattern = "abba", s = "dog cat cat fish"
Output: false
Example 3:
Input: pattern = "aaaa", s = "dog cat cat dog"
Output: false
Constraints:
1 <= pattern.length <= 300
pattern contains only lower-case English letters.
1 <= s.length <= 3000
s contains only lowercase English letters and spaces ' '.
s does not contain any leading or trailing spaces.
All the words in s are separated by a single space.
*/
/**
* @param {string} pattern
* @param {string} s
* @return {boolean}
PARAMETERS: TWO STRINGS, THE FIRST REPRESENTS A PATTERN OF LENGTH 1 <= pattern.length <= 300.
RESULTS: RETURN TRUE OR FALSE IF THE CONDITION IS MET. THE CONDITION IS IF THE SECOND STRING FOLLOWS THE SAME PATTERN OF THE FIRST
EXEMPLES:
Input: pattern = "abba", s = "dog cat cat dog"
Output: true
Input: pattern = "abba", s = "dog cat cat fish"
Output: false
Input: pattern = "aaaa", s = "dog cat cat dog"
Output: false
PSEUDOCODE:
TURN THE STRINGS INTO ARRAYS.
CREATE A CACHE VARIABLE TO STORE THE PATTERN-> STRING REPRESENTATION
SEE IF THE VALUE IS ALREADY ON THE CACHE, IF IS NOT ADD IT. IF IT IS, COMPARE THE STORED VALUE WITH ITS EQUIVALENT FROM THE STRING S. IF THEY ARE THE SAME, CONTINUE, IF NOT, RETURN FALSE.
*/
var wordPattern = function(pattern, s) {
let patArr = pattern.split('')
let sArr = s.split(' ')
let cache = {}
if (patArr.length != sArr.length) return false
for(let i = 0; i < patArr.length; i++){
if (patArr[i] in cache){
if (cache[patArr[i]] != sArr[i]){
console.log(cache)
return false
}
} else if(Object.values(cache).includes(sArr[i])){
console.log(Object.values(cache).includes(sArr[i]))
console.log(Object.values(cache).indexOf(sArr[i]))
if (Object.values(cache).indexOf(sArr[i]) != patArr[i]){
return false
}
} else {
cache[patArr[i]] = sArr[i]
}
}
console.log(cache)
return true
};