Skip to content

Commit 2305d3b

Browse files
committed
feat: add rust solution to lc problem: No.0917
No.0917.Reverse Only Letters
1 parent 1912cd0 commit 2305d3b

File tree

3 files changed

+70
-0
lines changed

3 files changed

+70
-0
lines changed

solution/0900-0999/0917.Reverse Only Letters/README.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,31 @@ func reverseOnlyLetters(s string) string {
178178
}
179179
```
180180

181+
### **Rust**
182+
183+
```rust
184+
impl Solution {
185+
pub fn reverse_only_letters(s: String) -> String {
186+
let mut cs: Vec<char> = s.chars().collect();
187+
let n = cs.len();
188+
let mut l = 0;
189+
let mut r = n - 1;
190+
while l < r {
191+
if !cs[l].is_ascii_alphabetic() {
192+
l += 1;
193+
} else if !cs[r].is_ascii_alphabetic() {
194+
r -= 1;
195+
} else {
196+
cs.swap(l, r);
197+
l += 1;
198+
r -= 1;
199+
}
200+
}
201+
cs.iter().collect()
202+
}
203+
}
204+
```
205+
181206
### **...**
182207

183208
```

solution/0900-0999/0917.Reverse Only Letters/README_EN.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,31 @@ func reverseOnlyLetters(s string) string {
146146
}
147147
```
148148

149+
### **Rust**
150+
151+
```rust
152+
impl Solution {
153+
pub fn reverse_only_letters(s: String) -> String {
154+
let mut cs: Vec<char> = s.chars().collect();
155+
let n = cs.len();
156+
let mut l = 0;
157+
let mut r = n - 1;
158+
while l < r {
159+
if !cs[l].is_ascii_alphabetic() {
160+
l += 1;
161+
} else if !cs[r].is_ascii_alphabetic() {
162+
r -= 1;
163+
} else {
164+
cs.swap(l, r);
165+
l += 1;
166+
r -= 1;
167+
}
168+
}
169+
cs.iter().collect()
170+
}
171+
}
172+
```
173+
149174
### **...**
150175

151176
```
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
impl Solution {
2+
pub fn reverse_only_letters(s: String) -> String {
3+
let mut cs: Vec<char> = s.chars().collect();
4+
let n = cs.len();
5+
let mut l = 0;
6+
let mut r = n - 1;
7+
while l < r {
8+
if !cs[l].is_ascii_alphabetic() {
9+
l += 1;
10+
} else if !cs[r].is_ascii_alphabetic() {
11+
r -= 1;
12+
} else {
13+
cs.swap(l, r);
14+
l += 1;
15+
r -= 1;
16+
}
17+
}
18+
cs.iter().collect()
19+
}
20+
}

0 commit comments

Comments
 (0)