From 8bf70ff701c755ece0c228058a333f4fb053c21d Mon Sep 17 00:00:00 2001 From: Joe Ardent Date: Tue, 30 Apr 2024 08:34:17 -0700 Subject: [PATCH] using the windows() iter methods is slow --- max_k_sum_pairs/src/main.rs | 4 +--- max_vowels_in_substring_k/Cargo.toml | 8 ++++++++ max_vowels_in_substring_k/src/main.rs | 29 +++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 max_vowels_in_substring_k/Cargo.toml create mode 100644 max_vowels_in_substring_k/src/main.rs diff --git a/max_k_sum_pairs/src/main.rs b/max_k_sum_pairs/src/main.rs index 4979934..1cc6059 100644 --- a/max_k_sum_pairs/src/main.rs +++ b/max_k_sum_pairs/src/main.rs @@ -13,9 +13,7 @@ fn foo(nums: &mut [i32], k: i32) -> i32 { let mut right = nums.len() - 1; while left < right { - let lv = nums[left]; - let rv = nums[right]; - let sum = lv + rv; + let sum = nums[left] + nums[right]; if sum < k { left += 1; } else if sum > k { diff --git a/max_vowels_in_substring_k/Cargo.toml b/max_vowels_in_substring_k/Cargo.toml new file mode 100644 index 0000000..c3eaaa1 --- /dev/null +++ b/max_vowels_in_substring_k/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "max_vowels_in_substring_k" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/max_vowels_in_substring_k/src/main.rs b/max_vowels_in_substring_k/src/main.rs new file mode 100644 index 0000000..28de294 --- /dev/null +++ b/max_vowels_in_substring_k/src/main.rs @@ -0,0 +1,29 @@ +fn main() { + //dbg!(m("aennnnnnnnnnnnniii".to_string(), 4)); + //dbg!(m("abciiidef".to_string(), 3)); + dbg!(m("leetcode".to_string(), 3)); +} + +fn m(s: String, k: i32) -> i32 { + let mut cur: i32 = s.chars().take(k as usize).map(is_vowel).sum(); + let cur = &mut cur; + let mut max = *cur; + let max = &mut max; + let add = s.chars().skip(k as usize); + let mut sub = s.chars(); + for c in add { + let s = sub.next().unwrap(); + *cur -= is_vowel(s); + *cur += is_vowel(c); + *max = *max.max(cur); + } + + *max +} + +fn is_vowel(c: char) -> i32 { + match c { + 'e' | 'i' | 'o' | 'u' | 'a' => 1, + _ => 0, + } +}