Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 8292d4f

Browse files
committed
day-17
1 parent 870700a commit 8292d4f

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,4 @@
1717
- Day 14: [Implement Trie (Prefix Tree)](https://github.com/libterty/leetcode-challenge/blob/master/src/may/day-thirteen/index.ts) :pig_nose:
1818
- Day 15: [Maximum Sum Circular Subarray](https://github.com/libterty/leetcode-challenge/blob/master/src/may/day-fifteen/index.ts) :whale:
1919
- Day 16: [Odd Even Linked List](https://github.com/libterty/leetcode-challenge/blob/master/src/may/day-sixteen/index.ts) :whale:
20+
- Day 17: [Find All Anagrams in a String Solution](https://github.com/libterty/leetcode-challenge/blob/master/src/may/day-seventeen/index.ts) :whale:

src/may/day-seventeen/index.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/**
2+
* @param {string} s
3+
* @param {string} p
4+
* @return {number[]}
5+
*/
6+
var findAnagrams = function (s: string, p: string) {
7+
let map = new Map();
8+
let result: number[] = [];
9+
let slideWindow = new Map();
10+
11+
for (var i = 0; i < p.length; i++) {
12+
if (map.get(p[i])) {
13+
map.set(p[i], map.get(p[i] + 1));
14+
} else {
15+
map.set(p[i], 1);
16+
}
17+
}
18+
19+
let right: number = 0;
20+
let left: number = 0;
21+
22+
while (right < s.length) {
23+
if (map.get(s.charAt(right))) {
24+
if (slideWindow.get(s.charAt(right)) && map.get(s.charAt(right)) === 1) {
25+
left = Math.max(slideWindow.get(s.charAt(right)), left);
26+
}
27+
if (right - left + 1 === p.length) {
28+
result.push(left);
29+
left++;
30+
}
31+
} else {
32+
left = right + 1;
33+
slideWindow.clear();
34+
}
35+
slideWindow.set(s.charAt(right), right + 1);
36+
right++;
37+
}
38+
return result;
39+
};
40+
41+
const ab = findAnagrams('cbaebabacd', 'abc');
42+
const bc = findAnagrams('abab', 'ab');
43+
console.log('ab', ab);
44+
console.log('bc', bc);

0 commit comments

Comments
 (0)