Skip to content

Commit bfb8db9

Browse files
committed
chore: upgrade tool-chain to nightly-2025-09-01
1 parent fcabd56 commit bfb8db9

22 files changed

+165
-90
lines changed

.github/workflows/check.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ concurrency:
1212

1313
env:
1414
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
15-
RUST_TOOLCHAIN: nightly-2025-07-01
15+
RUST_TOOLCHAIN: nightly-2025-09-01
1616

1717
name: Check
1818
jobs:

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ concurrency:
1212

1313
env:
1414
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
15-
RUST_TOOLCHAIN: nightly-2025-07-01
15+
RUST_TOOLCHAIN: nightly-2025-09-01
1616

1717
name: Test
1818
jobs:

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name = "leetcode-rust"
33
version = "0.1.0"
44
authors = ["ben1009"]
5-
edition = "2021"
5+
edition = "2024"
66

77
[dependencies]
88
dotenv = "0.15.0"

rust-toolchain

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
[toolchain]
2-
channel = "nightly-2025-07-01"
2+
channel = "nightly-2025-09-01"

src/main.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,10 +168,10 @@ fn get_initialized_ids(path: &str) -> Vec<u32> {
168168

169169
let mut ret = vec![];
170170
for l in content.lines() {
171-
if !l.trim().starts_with("//") {
172-
if let Some(id) = id_pattern.captures(l) {
173-
ret.push(id.get(1).unwrap().as_str().parse::<u32>().unwrap());
174-
}
171+
if !l.trim().starts_with("//")
172+
&& let Some(id) = id_pattern.captures(l)
173+
{
174+
ret.push(id.get(1).unwrap().as_str().parse::<u32>().unwrap());
175175
}
176176
}
177177

src/problem/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ pub mod p0152_maximum_product_subarray;
3737
pub mod p0153_find_minimum_in_rotated_sorted_array;
3838
pub mod p0155_min_stack;
3939
pub mod p0165_compare_version_numbers;
40+
pub mod p0190_reverse_bits;
4041
pub mod p0202_happy_number;
4142
pub mod p0205_isomorphic_strings;
4243
pub mod p0243_shortest_word_distance;

src/problem/p0001_two_sum.rs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,13 @@ pub struct Solution {}
4242

4343
impl Solution {
4444
pub fn two_sum(nums: Vec<i32>, target: i32) -> Vec<i32> {
45-
let mut map = HashMap::new();
46-
for (i, &n) in nums.iter().enumerate() {
47-
if let Some(&j) = map.get(&(target - n)) {
48-
return vec![j, i as i32];
45+
let mut dic = HashMap::new();
46+
for (idx, &n) in nums.iter().enumerate() {
47+
if let Some(&v) = dic.get(&(target - n)) {
48+
return vec![v as i32, idx as i32];
4949
}
50-
map.insert(n, i as i32);
50+
51+
dic.insert(n, idx);
5152
}
5253

5354
vec![]
@@ -62,8 +63,10 @@ mod tests {
6263

6364
#[test]
6465
fn test_1() {
65-
assert!(Solution::two_sum(vec![2, 7, 11, 15], 9) == vec![0, 1]);
66-
assert!(Solution::two_sum(vec![3, 2, 4], 6) == vec![1, 2]);
67-
assert!(Solution::two_sum(vec![3, 3], 6) == vec![0, 1]);
66+
assert_eq!(Solution::two_sum(vec![2, 7, 11, 15], 9), vec![0, 1]);
67+
assert_eq!(Solution::two_sum(vec![3, 2, 4], 6), vec![1, 2]);
68+
assert_eq!(Solution::two_sum(vec![3, 3], 6), vec![0, 1]);
69+
assert_eq!(Solution::two_sum(vec![3, 2, 3], 6), vec![0, 2]);
70+
assert_eq!(Solution::two_sum(vec![0, 4, 3, 0], 0), vec![0, 3]);
6871
}
6972
}

src/problem/p0002_add_two_numbers.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -64,25 +64,25 @@ impl Solution {
6464
return l1;
6565
}
6666

67-
let mut root_pointer = ListNode::new(0);
68-
let mut current = &mut root_pointer;
69-
let mut carry = 0;
7067
let mut l1 = l1;
7168
let mut l2 = l2;
69+
let mut carry = 0;
70+
let mut root_pointer = ListNode::new(0);
71+
let mut current = &mut root_pointer;
7272
while l1.is_some() || l2.is_some() || carry != 0 {
7373
let mut v1 = 0;
7474
let mut v2 = 0;
75-
if let Some(mut n1) = l1 {
76-
v1 = n1.val;
77-
l1 = n1.next.take();
75+
if let Some(mut l) = l1 {
76+
v1 = l.val;
77+
l1 = l.next.take();
7878
}
79-
if let Some(mut n2) = l2 {
80-
v2 = n2.val;
81-
l2 = n2.next.take();
79+
if let Some(mut l) = l2 {
80+
v2 = l.val;
81+
l2 = l.next.take();
8282
}
83-
let v = (v1 + v2 + carry) % 10;
84-
carry = (v1 + v2 + carry) / 10;
85-
current.next = Some(Box::new(ListNode::new(v)));
83+
let v = v1 + v2 + carry;
84+
carry = v / 10;
85+
current.next = Some(Box::new(ListNode::new(v % 10)));
8686
current = current.next.as_mut().unwrap();
8787
}
8888

src/problem/p0003_longest_substring_without_repeating_characters.rs

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::collections::HashMap;
1+
use std::{cmp, collections::HashMap};
22

33
/// [3] Longest Substring Without Repeating Characters
44
///
@@ -41,20 +41,16 @@ impl Solution {
4141
return s.len() as i32;
4242
}
4343

44-
let mut map = HashMap::new();
4544
let mut ret = 0;
4645
let mut pre = 0;
47-
for (i, c) in s.bytes().enumerate() {
48-
match map.entry(c) {
49-
std::collections::hash_map::Entry::Occupied(o) => {
50-
if o.get() >= &pre {
51-
pre = o.get() + 1;
52-
}
53-
}
54-
std::collections::hash_map::Entry::Vacant(_) => {}
46+
let mut dic = HashMap::new();
47+
for (i, b) in s.bytes().enumerate() {
48+
if !dic.contains_key(&b) || dic[&b] < pre {
49+
ret = cmp::max(ret, i - pre + 1);
50+
} else {
51+
pre = dic[&b] + 1;
5552
}
56-
ret = ret.max(i - pre + 1);
57-
map.insert(c, i);
53+
dic.insert(b, i);
5854
}
5955

6056
ret as i32

src/problem/p0005_longest_palindromic_substring.rs

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,29 +31,33 @@ impl Solution {
3131
return s;
3232
}
3333

34-
let s = s.as_bytes();
35-
let mut ret: &[u8] = &[];
36-
for i in 0..s.len() - 1 {
37-
let s1 = Solution::pali(s, i as i32, i);
38-
let s2 = Solution::pali(s, i as i32, i + 1);
39-
if s1.len() > ret.len() {
34+
let bb = s.as_bytes();
35+
let mut ret: &[_] = &[];
36+
for i in 0..bb.len() - 1 {
37+
let s1 = Solution::is_pali(bb, i as i32, i);
38+
let s2 = Solution::is_pali(bb, i as i32, i + 1);
39+
if ret.len() < s1.len() {
4040
ret = s1;
4141
}
42-
if s2.len() > ret.len() {
42+
if ret.len() < s2.len() {
4343
ret = s2;
4444
}
4545
}
4646

4747
String::from_utf8_lossy(ret).to_string()
4848
}
4949

50-
fn pali(s: &[u8], mut l: i32, mut r: usize) -> &[u8] {
51-
while l >= 0 && r < s.len() && s[l as usize] == s[r] {
52-
l -= 1;
53-
r += 1;
50+
fn is_pali(bb: &[u8], mut i: i32, mut j: usize) -> &[u8] {
51+
while i >= 0 && j < bb.len() {
52+
if bb[i as usize] != bb[j] {
53+
break;
54+
}
55+
56+
i -= 1;
57+
j += 1;
5458
}
5559

56-
&s[(l + 1) as usize..r]
60+
&bb[(i + 1) as usize..j]
5761
}
5862
}
5963

0 commit comments

Comments
 (0)