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 ;
|
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>
|
<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