Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit dc86e00

Browse files
committed
feat: add rust solution to lcci problem: No.01.05
No.01.05.One Away
1 parent e34ca9d commit dc86e00

File tree

3 files changed

+163
-0
lines changed

3 files changed

+163
-0
lines changed

‎lcci/01.05.One Away/README.md‎

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,62 @@ func min(x, y, z int) int {
195195
}
196196
```
197197

198+
### **Rust**
199+
200+
```rust
201+
impl Solution {
202+
pub fn one_edit_away(first: String, second: String) -> bool {
203+
let f_len = first.len();
204+
let s_len = second.len();
205+
let first: Vec<char> = first.chars().collect();
206+
let second: Vec<char> = second.chars().collect();
207+
match f_len.max(s_len) - f_len.min(s_len) {
208+
0 => {
209+
let mut diff = false;
210+
for i in 0..f_len {
211+
if first[i] != second[i] {
212+
if diff {
213+
return false;
214+
} else {
215+
diff = true;
216+
}
217+
}
218+
}
219+
true
220+
}
221+
1 => {
222+
let mut diff = false;
223+
let mut i = 0;
224+
let mut j = 0;
225+
while i < f_len && j < s_len {
226+
if first[i] != second[j] {
227+
if diff {
228+
return false;
229+
} else {
230+
diff = true;
231+
if i + 1 != f_len && first[i + 1] == second[j] {
232+
i += 1;
233+
} else if j + 1 != s_len && first[i] == second[j + 1] {
234+
j += 1;
235+
} else {
236+
return false;
237+
}
238+
}
239+
}
240+
i += 1;
241+
j += 1;
242+
}
243+
if diff && (i != f_len || j != s_len) {
244+
return false;
245+
}
246+
true
247+
}
248+
_ => false,
249+
}
250+
}
251+
}
252+
```
253+
198254
### **...**
199255

200256
```

‎lcci/01.05.One Away/README_EN.md‎

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,62 @@ func min(x, y, z int) int {
179179
}
180180
```
181181

182+
### **Rust**
183+
184+
```rust
185+
impl Solution {
186+
pub fn one_edit_away(first: String, second: String) -> bool {
187+
let f_len = first.len();
188+
let s_len = second.len();
189+
let first: Vec<char> = first.chars().collect();
190+
let second: Vec<char> = second.chars().collect();
191+
match f_len.max(s_len) - f_len.min(s_len) {
192+
0 => {
193+
let mut diff = false;
194+
for i in 0..f_len {
195+
if first[i] != second[i] {
196+
if diff {
197+
return false;
198+
} else {
199+
diff = true;
200+
}
201+
}
202+
}
203+
true
204+
}
205+
1 => {
206+
let mut diff = false;
207+
let mut i = 0;
208+
let mut j = 0;
209+
while i < f_len && j < s_len {
210+
if first[i] != second[j] {
211+
if diff {
212+
return false;
213+
} else {
214+
diff = true;
215+
if i + 1 != f_len && first[i + 1] == second[j] {
216+
i += 1;
217+
} else if j + 1 != s_len && first[i] == second[j + 1] {
218+
j += 1;
219+
} else {
220+
return false;
221+
}
222+
}
223+
}
224+
i += 1;
225+
j += 1;
226+
}
227+
if diff && (i != f_len || j != s_len) {
228+
return false;
229+
}
230+
true
231+
}
232+
_ => false,
233+
}
234+
}
235+
}
236+
```
237+
182238
### **...**
183239

184240
```

‎lcci/01.05.One Away/Solution.rs‎

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
impl Solution {
2+
pub fn one_edit_away(first: String, second: String) -> bool {
3+
let f_len = first.len();
4+
let s_len = second.len();
5+
let first: Vec<char> = first.chars().collect();
6+
let second: Vec<char> = second.chars().collect();
7+
match f_len.max(s_len) - f_len.min(s_len) {
8+
0 => {
9+
let mut diff = false;
10+
for i in 0..f_len {
11+
if first[i] != second[i] {
12+
if diff {
13+
return false;
14+
} else {
15+
diff = true;
16+
}
17+
}
18+
}
19+
true
20+
}
21+
1 => {
22+
let mut diff = false;
23+
let mut i = 0;
24+
let mut j = 0;
25+
while i < f_len && j < s_len {
26+
if first[i] != second[j] {
27+
if diff {
28+
return false;
29+
} else {
30+
diff = true;
31+
if i + 1 != f_len && first[i + 1] == second[j] {
32+
i += 1;
33+
} else if j + 1 != s_len && first[i] == second[j + 1] {
34+
j += 1;
35+
} else {
36+
return false;
37+
}
38+
}
39+
}
40+
i += 1;
41+
j += 1;
42+
}
43+
if diff && (i != f_len || j != s_len) {
44+
return false;
45+
}
46+
true
47+
}
48+
_ => false,
49+
}
50+
}
51+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /