File tree Expand file tree Collapse file tree 1 file changed +26
-14
lines changed
Expand file tree Collapse file tree 1 file changed +26
-14
lines changed Original file line number Diff line number Diff line change 1- function isValid ( s : string ) : boolean {
2- const stack = [ ] ;
3- for ( let i = 0 ; i < s . length ; i ++ ) {
4- if ( s [ i ] === '(' || s [ i ] === '[' || s [ i ] === '{' ) {
5- stack . push ( s [ i ] )
1+ const isValid = ( s : string ) : boolean => {
2+ const openBrackets : string [ ] = [ ] ;
3+ const bracketPairs : Record < string , string > = {
4+ ')' : '(' ,
5+ ']' : '[' ,
6+ '}' : '{'
7+ } ;
8+
9+ for ( const char of s ) {
10+ const isOpenBracket = char === '(' || char === '[' || char === '{' ;
11+
12+ if ( isOpenBracket ) {
13+ openBrackets . push ( char ) ;
614 } else {
7- if ( stack . length === 0 ) {
15+ // Closing bracket with no matching open bracket
16+ if ( openBrackets . length === 0 ) {
17+ return false ;
18+ }
19+
20+ const lastOpenBracket = openBrackets . pop ( ) ! ;
21+ const expectedOpenBracket = bracketPairs [ char ] ;
22+
23+ // Mismatched bracket types
24+ if ( lastOpenBracket !== expectedOpenBracket ) {
825 return false ;
926 }
10- const top = stack . pop ( ) ;
11- if ( s [ i ] == ')' && top != '(' ) return false ;
12-
13- if ( s [ i ] == ']' && top != '[' ) return false ;
14-
15- if ( s [ i ] == '}' && top != '{' ) return false ;
1627 }
1728 }
18-
19- return stack . length === 0 ;
29+
30+ // All brackets must be closed
31+ return openBrackets . length === 0 ;
2032} ;
You can’t perform that action at this time.
0 commit comments