File tree 2 files changed +45
-0
lines changed 2 files changed +45
-0
lines changed Original file line number Diff line number Diff line change 17
17
- Day 14: [ Implement Trie (Prefix Tree)] ( https://github.com/libterty/leetcode-challenge/blob/master/src/may/day-thirteen/index.ts ) :pig_nose :
18
18
- Day 15: [ Maximum Sum Circular Subarray] ( https://github.com/libterty/leetcode-challenge/blob/master/src/may/day-fifteen/index.ts ) :whale :
19
19
- 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 :
Original file line number Diff line number Diff line change
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 ) ;
You can’t perform that action at this time.
0 commit comments