Expressive Words LeetCode solution in JavaScript

1
/**
2
* @param {string} s
3
* @param {string[]} words
4
* @return {number}
5
*/
6
var expressiveWords = function (s, words) {
7
let arr = [];
8
let curr = 0;
9
while (curr < s.length) {
10
let count = 1;
11
while (s[curr] === s[curr + 1]) {
12
count++;
13
curr++;
14
}
15
arr.push([s[curr], count]);
16
curr++;
17
}
18
let ans = 0;
19
for (let charArr of words) {
20
let idx = 0;
21
let i = 0;
22
let flag = true;
23
if (charArr.length > s.length) continue;
24

25
while (i < charArr.length) {
26
let count = 1;
27
while (charArr[i] === charArr[i + 1]) {
28
i++;
29
count++;
30
}
31
if (
32
arr[idx][0] !== charArr[i] ||
33
arr[idx][1] < count ||
34
(arr[idx][1] < 3 && arr[idx][1] !== count)
35
) {
36
flag = false;
37
break;
38
}
39
idx++;
40
i++;
41
}
42
if (idx !== arr.length) flag = false;
43
if (flag) ans++;
44
}
45
return ans;
46
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0