mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-11 21:10:58 +08:00
添加 0151.翻转字符串里的单词 Rust版本
添加 0151.翻转字符串里的单词 Rust版本
This commit is contained in:
@ -864,7 +864,58 @@ function reverseString(&$s, $start, $end) {
|
||||
return ;
|
||||
}
|
||||
```
|
||||
Rust:
|
||||
|
||||
```Rust
|
||||
// 根据C++版本二思路进行实现
|
||||
// 函数名根据Rust编译器建议由驼峰命名法改为蛇形命名法
|
||||
impl Solution {
|
||||
pub fn reverse(s: &mut Vec<char>, mut begin: usize, mut end: usize){
|
||||
while begin < end {
|
||||
let temp = s[begin];
|
||||
s[begin] = s[end];
|
||||
s[end] = temp;
|
||||
begin += 1;
|
||||
end -= 1;
|
||||
}
|
||||
}
|
||||
pub fn remove_extra_spaces(s: &mut Vec<char>) {
|
||||
let mut slow: usize = 0;
|
||||
let len = s.len();
|
||||
// 注意这里不能用for循环,不然在里面那个while循环中对i的递增会失效
|
||||
let mut i: usize = 0;
|
||||
while i < len {
|
||||
if !s[i].is_ascii_whitespace() {
|
||||
if slow != 0 {
|
||||
s[slow] = ' ';
|
||||
slow += 1;
|
||||
}
|
||||
while i < len && !s[i].is_ascii_whitespace() {
|
||||
s[slow] = s[i];
|
||||
slow += 1;
|
||||
i += 1;
|
||||
}
|
||||
}
|
||||
i += 1;
|
||||
}
|
||||
s.resize(slow, ' ');
|
||||
}
|
||||
pub fn reverse_words(s: String) -> String {
|
||||
let mut s = s.chars().collect::<Vec<char>>();
|
||||
Self::remove_extra_spaces(&mut s);
|
||||
let len = s.len();
|
||||
Self::reverse(&mut s, 0, len - 1);
|
||||
let mut start = 0;
|
||||
for i in 0..=len {
|
||||
if i == len || s[i].is_ascii_whitespace() {
|
||||
Self::reverse(&mut s, start, i - 1);
|
||||
start = i + 1;
|
||||
}
|
||||
}
|
||||
s.iter().collect::<String>()
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
-----------------------
|
||||
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
||||
|
Reference in New Issue
Block a user