Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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)

AltStyle によって変換されたページ (->オリジナル) /