File tree Expand file tree Collapse file tree 3 files changed +94
-0
lines changed
solution/0900-0999/0953.Verifying an Alien Dictionary Expand file tree Collapse file tree 3 files changed +94
-0
lines changed Original file line number Diff line number Diff line change @@ -174,6 +174,39 @@ func min(a, b int) int {
174
174
}
175
175
```
176
176
177
+ ### ** Rust**
178
+
179
+ ``` rust
180
+ use std :: collections :: HashMap ;
181
+ impl Solution {
182
+ pub fn is_alien_sorted (words : Vec <String >, order : String ) -> bool {
183
+ let n = words . len ();
184
+ let mut map = HashMap :: new ();
185
+ order . as_bytes (). iter (). enumerate (). for_each (| (i , & v )| {
186
+ map . insert (v , i );
187
+ });
188
+ for i in 1 .. n {
189
+ let s1 = words [i - 1 ]. as_bytes ();
190
+ let s2 = words [i ]. as_bytes ();
191
+ let mut is_equal = true ;
192
+ for i in 0 .. s1 . len (). min (s2 . len ()) {
193
+ if map . get (& s1 [i ]) > map . get (& s2 [i ]) {
194
+ return false ;
195
+ }
196
+ if map . get (& s1 [i ]) < map . get (& s2 [i ]) {
197
+ is_equal = false ;
198
+ break ;
199
+ }
200
+ }
201
+ if is_equal && s1 . len () > s2 . len () {
202
+ return false ;
203
+ }
204
+ }
205
+ true
206
+ }
207
+ }
208
+ ```
209
+
177
210
### ** ...**
178
211
179
212
```
Original file line number Diff line number Diff line change @@ -160,6 +160,39 @@ func min(a, b int) int {
160
160
}
161
161
```
162
162
163
+ ### ** Rust**
164
+
165
+ ``` rust
166
+ use std :: collections :: HashMap ;
167
+ impl Solution {
168
+ pub fn is_alien_sorted (words : Vec <String >, order : String ) -> bool {
169
+ let n = words . len ();
170
+ let mut map = HashMap :: new ();
171
+ order . as_bytes (). iter (). enumerate (). for_each (| (i , & v )| {
172
+ map . insert (v , i );
173
+ });
174
+ for i in 1 .. n {
175
+ let s1 = words [i - 1 ]. as_bytes ();
176
+ let s2 = words [i ]. as_bytes ();
177
+ let mut is_equal = true ;
178
+ for i in 0 .. s1 . len (). min (s2 . len ()) {
179
+ if map . get (& s1 [i ]) > map . get (& s2 [i ]) {
180
+ return false ;
181
+ }
182
+ if map . get (& s1 [i ]) < map . get (& s2 [i ]) {
183
+ is_equal = false ;
184
+ break ;
185
+ }
186
+ }
187
+ if is_equal && s1 . len () > s2 . len () {
188
+ return false ;
189
+ }
190
+ }
191
+ true
192
+ }
193
+ }
194
+ ```
195
+
163
196
### ** ...**
164
197
165
198
```
Original file line number Diff line number Diff line change
1
+ use std:: collections:: HashMap ;
2
+ impl Solution {
3
+ pub fn is_alien_sorted ( words : Vec < String > , order : String ) -> bool {
4
+ let n = words. len ( ) ;
5
+ let mut map = HashMap :: new ( ) ;
6
+ order. as_bytes ( ) . iter ( ) . enumerate ( ) . for_each ( |( i, & v) | {
7
+ map. insert ( v, i) ;
8
+ } ) ;
9
+ for i in 1 ..n {
10
+ let s1 = words[ i - 1 ] . as_bytes ( ) ;
11
+ let s2 = words[ i] . as_bytes ( ) ;
12
+ let mut is_equal = true ;
13
+ for i in 0 ..s1. len ( ) . min ( s2. len ( ) ) {
14
+ if map. get ( & s1[ i] ) > map. get ( & s2[ i] ) {
15
+ return false ;
16
+ }
17
+ if map. get ( & s1[ i] ) < map. get ( & s2[ i] ) {
18
+ is_equal = false ;
19
+ break ;
20
+ }
21
+ }
22
+ if is_equal && s1. len ( ) > s2. len ( ) {
23
+ return false ;
24
+ }
25
+ }
26
+ true
27
+ }
28
+ }
You can’t perform that action at this time.
0 commit comments