mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-11 04:54:51 +08:00
添加 0203.移除链表元素 0344.反转字符串 0376.摆动序列 0541.反转字符串II 剑指Offer05.替换空格 Rust版本
添加 0203.移除链表元素 0344.反转字符串 0376.摆动序列 0541.反转字符串II 剑指Offer05.替换空格 Rust版本
This commit is contained in:
@ -487,17 +487,19 @@ RUST:
|
|||||||
// }
|
// }
|
||||||
impl Solution {
|
impl Solution {
|
||||||
pub fn remove_elements(head: Option<Box<ListNode>>, val: i32) -> Option<Box<ListNode>> {
|
pub fn remove_elements(head: Option<Box<ListNode>>, val: i32) -> Option<Box<ListNode>> {
|
||||||
let mut head = head;
|
let mut dummyHead = Box::new(ListNode::new(0));
|
||||||
let mut dummy_head = ListNode::new(0);
|
dummyHead.next = head;
|
||||||
let mut cur = &mut dummy_head;
|
let mut cur = dummyHead.as_mut();
|
||||||
while let Some(mut node) = head {
|
// 使用take()替换std::men::replace(&mut node.next, None)达到相同的效果,并且更普遍易读
|
||||||
head = std::mem::replace(&mut node.next, None);
|
while let Some(nxt) = cur.next.take() {
|
||||||
if node.val != val {
|
if nxt.val == val {
|
||||||
cur.next = Some(node);
|
cur.next = nxt.next;
|
||||||
|
} else {
|
||||||
|
cur.next = Some(nxt);
|
||||||
cur = cur.next.as_mut().unwrap();
|
cur = cur.next.as_mut().unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dummy_head.next
|
dummyHead.next
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
@ -238,6 +238,22 @@ func reverseString(_ s: inout [Character]) {
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Rust:
|
||||||
|
```Rust
|
||||||
|
impl Solution {
|
||||||
|
pub fn reverse_string(s: &mut Vec<char>) {
|
||||||
|
let (mut left, mut right) = (0, s.len()-1);
|
||||||
|
while left < right {
|
||||||
|
let temp = s[left];
|
||||||
|
s[left] = s[right];
|
||||||
|
s[right] = temp;
|
||||||
|
left += 1;
|
||||||
|
right -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
C:
|
C:
|
||||||
```c
|
```c
|
||||||
void reverseString(char* s, int sSize){
|
void reverseString(char* s, int sSize){
|
||||||
|
@ -298,6 +298,29 @@ var wiggleMaxLength = function(nums) {
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Rust
|
||||||
|
**贪心**
|
||||||
|
```Rust
|
||||||
|
impl Solution {
|
||||||
|
pub fn wiggle_max_length(nums: Vec<i32>) -> i32 {
|
||||||
|
let len = nums.len() as usize;
|
||||||
|
if len <= 1 {
|
||||||
|
return len as i32;
|
||||||
|
}
|
||||||
|
let mut preDiff = 0;
|
||||||
|
let mut curDiff = 0;
|
||||||
|
let mut result = 1;
|
||||||
|
for i in 0..len-1 {
|
||||||
|
curDiff = nums[i+1] - nums[i];
|
||||||
|
if (preDiff <= 0 && curDiff > 0) || (preDiff >= 0 && curDiff < 0) {
|
||||||
|
result += 1;
|
||||||
|
preDiff = curDiff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### C
|
### C
|
||||||
**贪心**
|
**贪心**
|
||||||
|
@ -389,5 +389,36 @@ object Solution {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Rust:
|
||||||
|
|
||||||
|
```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 reverse_str(s: String, k: i32) -> String {
|
||||||
|
let len = s.len();
|
||||||
|
let k = k as usize;
|
||||||
|
let mut s = s.chars().collect::<Vec<_>>();
|
||||||
|
for i in (0..len).step_by(2 * k) {
|
||||||
|
if i + k < len {
|
||||||
|
Self::reverse(&mut s, i, i + k - 1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Self::reverse(&mut s, i, len - 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>
|
||||||
|
@ -506,6 +506,37 @@ function spaceLen($s){
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Rust
|
||||||
|
|
||||||
|
```Rust
|
||||||
|
impl Solution {
|
||||||
|
pub fn replace_space(s: String) -> String {
|
||||||
|
let mut len: usize = s.len();
|
||||||
|
let mut s = s.chars().collect::<Vec<char>>();
|
||||||
|
let mut count = 0;
|
||||||
|
for i in &s {
|
||||||
|
if i.is_ascii_whitespace() {
|
||||||
|
count += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let mut new_len = len + count * 2;
|
||||||
|
s.resize(new_len, ' ');
|
||||||
|
while len < new_len {
|
||||||
|
len -= 1;
|
||||||
|
new_len -= 1;
|
||||||
|
if s[len].is_ascii_whitespace() {
|
||||||
|
s[new_len] = '0';
|
||||||
|
s[new_len - 1] = '2';
|
||||||
|
s[new_len - 2] = '%';
|
||||||
|
new_len -= 2;
|
||||||
|
}
|
||||||
|
else { s[new_len] = s[len] }
|
||||||
|
}
|
||||||
|
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