Skip to content

Commit 735fb4c

Browse files
committed
feat: add rust solution to lc problem: No.0953
No.0953.Verifying an Alien Dictionary
1 parent 69ef079 commit 735fb4c

File tree

3 files changed

+94
-0
lines changed

3 files changed

+94
-0
lines changed

solution/0900-0999/0953.Verifying an Alien Dictionary/README.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,39 @@ func min(a, b int) int {
174174
}
175175
```
176176

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+
177210
### **...**
178211

179212
```

solution/0900-0999/0953.Verifying an Alien Dictionary/README_EN.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,39 @@ func min(a, b int) int {
160160
}
161161
```
162162

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+
163196
### **...**
164197

165198
```
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
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+
}

0 commit comments

Comments
 (0)