File tree Expand file tree Collapse file tree 1 file changed +36
-0
lines changed
Expand file tree Collapse file tree 1 file changed +36
-0
lines changed Original file line number Diff line number Diff line change 1+
2+ /**
3+ * Stack
4+ * Time O(N) | Space O(N)
5+ * https://leetcode.com/problems/simplify-path
6+ * @param {string } path
7+ * @return {string }
8+ */
9+ var simplifyPath = ( path , slash = '/' , stack = [ ] ) => {
10+ const paths = path . split ( slash ) . filter ( Boolean ) ;
11+
12+ for ( const _path of paths ) traversePath ( _path , stack ) ;
13+
14+ return `${ slash } ${ stack . join ( slash ) } ` ;
15+ } ;
16+
17+ const traversePath = ( path , stack ) => {
18+ if ( canPush ( path ) ) return stack . push ( path ) ;
19+
20+ if ( canPop ( path , stack ) ) stack . pop ( ) ;
21+ } ;
22+
23+ const canPush = ( path ) => ! (
24+ isCurrentDirectory ( path ) ||
25+ isParentDirectory ( path )
26+ ) ;
27+
28+ const canPop = ( path , stack ) =>
29+ isParentDirectory ( path ) &&
30+ ! isEmpty ( stack ) ;
31+
32+ const isCurrentDirectory = ( path ) => ( path === '.' ) ;
33+
34+ const isParentDirectory = ( path ) => ( path === '..' ) ;
35+
36+ const isEmpty = ( { length } ) => ( 0 === length ) ;
You can’t perform that action at this time.
0 commit comments