1.我的暴力解法
class Solution {
public boolean isValid ( String s) {
Stack < Character > stk= new Stack < Character > ( ) ;
int i= 0 ;
if ( s. length ( ) % 2 != 0 )
return false ;
for ( ; i< s. length ( ) ; i++ ) {
if ( s. charAt ( i) == '(' ) {
stk. push ( '(' ) ;
}
else if ( s. charAt ( i) == '{' ) {
stk. push ( '{' ) ;
}
else if ( s. charAt ( i) == '[' ) {
stk. push ( '[' ) ;
}
else {
if ( s. charAt ( i) == ')' ) {
if ( ! stk. isEmpty ( ) && stk. peek ( ) == '(' )
stk. pop ( ) ;
else
return false ;
}
else if ( s. charAt ( i) == '}' ) {
if ( ! stk. isEmpty ( ) && stk. peek ( ) == '{' )
stk. pop ( ) ;
else
return false ;
}
else if ( s. charAt ( i) == ']' ) {
if ( ! stk. isEmpty ( ) && stk. peek ( ) == '[' )
stk. pop ( ) ;
else
return false ;
}
else {
return false ;
}
}
}
return stk. isEmpty ( ) ;
}
}
2.大佬解法,哈希解法
class Solution {
public boolean isValid ( String s) {
LinkedList < Character > list= new LinkedList < > ( ) ;
list. add ( '?' ) ;
if ( s. length ( ) % 2 != 0 )
return false ;
HashMap < Character , Character > map= new HashMap < > ( ) ;
map. put ( '(' , ')' ) ;
map. put ( '[' , ']' ) ;
map. put ( '{' , '}' ) ;
map. put ( '?' , '?' ) ;
int i= 0 ;
for ( ; i< s. length ( ) ; i++ ) {
if ( map. containsKey ( s. charAt ( i) ) ) {
list. add ( s. charAt ( i) ) ;
} else if ( map. get ( list. pollLast ( ) ) != s. charAt ( i) ) {
return false ;
}
}
return list. size ( ) == 1 ;
}
}