From 94289d0c7a365db33e251ec510d1cbf65fe21f52 Mon Sep 17 00:00:00 2001 From: Ishan Jain Date: Tue, 6 Dec 2022 11:49:22 +0530 Subject: [PATCH] optimized day 6 part 2 by replacing arrays with u32 --- src/main.rs | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/src/main.rs b/src/main.rs index 0546b2c..ced95fb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,24 +21,15 @@ fn main() { } fn solution(input: &[u8]) -> usize { - let mut buffer = [0; 26]; + for idx in 0..input.len() - N { + let mut buffer = 0u32; - for &c in input.iter().take(N) { - buffer[(c - b'a') as usize] += 1; - } + for &c in &input[idx..(idx + N)] { + buffer |= 1 << (c - b'a') as usize; + } - if buffer.iter().all(|&c| c == 0 || c == 1) { - return 0; - } - - for i in N..input.len() { - let c = input[i]; - buffer[(c - b'a') as usize] += 1; - let last = input[i - N]; - buffer[(last - b'a') as usize] -= 1; - - if buffer.iter().all(|&c| c == 0 || c == 1) { - return i + 1; + if buffer.count_ones() as usize == N { + return idx + N; } }