mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-10 20:40:39 +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 {
|
||||
pub fn remove_elements(head: Option<Box<ListNode>>, val: i32) -> Option<Box<ListNode>> {
|
||||
let mut head = head;
|
||||
let mut dummy_head = ListNode::new(0);
|
||||
let mut cur = &mut dummy_head;
|
||||
while let Some(mut node) = head {
|
||||
head = std::mem::replace(&mut node.next, None);
|
||||
if node.val != val {
|
||||
cur.next = Some(node);
|
||||
let mut dummyHead = Box::new(ListNode::new(0));
|
||||
dummyHead.next = head;
|
||||
let mut cur = dummyHead.as_mut();
|
||||
// 使用take()替换std::men::replace(&mut node.next, None)达到相同的效果,并且更普遍易读
|
||||
while let Some(nxt) = cur.next.take() {
|
||||
if nxt.val == val {
|
||||
cur.next = nxt.next;
|
||||
} else {
|
||||
cur.next = Some(nxt);
|
||||
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
|
||||
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
|
||||
**贪心**
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
Reference in New Issue
Block a user