@@ -4,8 +4,8 @@ impl Solution {
4
4
fn digit_neighbors ( c : char ) -> Vec < char > {
5
5
let n = c. to_digit ( 10 ) . unwrap ( ) ;
6
6
vec ! [
7
- char :: from_digit( ( n + 9 ) % 10 , 10 ) . unwrap( ) ,
8
- char :: from_digit( ( n + 1 ) % 10 , 10 ) . unwrap( ) ,
7
+ std :: char :: from_digit( ( n + 9 ) % 10 , 10 ) . unwrap( ) ,
8
+ std :: char :: from_digit( ( n + 1 ) % 10 , 10 ) . unwrap( ) ,
9
9
]
10
10
}
11
11
@@ -27,6 +27,9 @@ impl Solution {
27
27
}
28
28
29
29
pub fn open_lock ( deadends : Vec < String > , target : String ) -> i32 {
30
+ if deadends. contains ( & "0000" . to_string ( ) ) {
31
+ return -1 ;
32
+ }
30
33
let mut marked = vec ! [ false ; 10000 ] ;
31
34
for d in deadends {
32
35
marked[ d. parse :: < usize > ( ) . unwrap ( ) ] = true ;
@@ -67,10 +70,10 @@ mod tests {
67
70
assert_eq ! ( Solution :: digit_neighbors( '9' ) , vec![ '8' , '0' ] ) ;
68
71
for n in 1 ..9 {
69
72
assert_eq ! (
70
- Solution :: digit_neighbors( char :: from_digit( n, 10 ) . unwrap( ) ) ,
73
+ Solution :: digit_neighbors( std :: char :: from_digit( n, 10 ) . unwrap( ) ) ,
71
74
vec![
72
- char :: from_digit( n - 1 , 10 ) . unwrap( ) ,
73
- char :: from_digit( n + 1 , 10 ) . unwrap( )
75
+ std :: char :: from_digit( n - 1 , 10 ) . unwrap( ) ,
76
+ std :: char :: from_digit( n + 1 , 10 ) . unwrap( )
74
77
]
75
78
) ;
76
79
}
0 commit comments