diff --git a/src/problem/mod.rs b/src/problem/mod.rs index 49646a5..8dd2cef 100644 --- a/src/problem/mod.rs +++ b/src/problem/mod.rs @@ -494,3 +494,5 @@ mod p1299_replace_elements_with_greatest_element_on_right_side; mod p2080_range_frequency_queries; mod p624_maximum_distance_in_arrays; + +mod p2595_number_of_even_and_odd_bits; diff --git a/src/problem/p2595_number_of_even_and_odd_bits.rs b/src/problem/p2595_number_of_even_and_odd_bits.rs new file mode 100644 index 0000000..4bb710b --- /dev/null +++ b/src/problem/p2595_number_of_even_and_odd_bits.rs @@ -0,0 +1,43 @@ +/** + * [2595] Number of Even and Odd Bits + */ +pub struct Solution {} + +// submission codes start here + +impl Solution { + pub fn even_odd_bit(mut n: i32) -> Vec { + let mut is_even = true; + let mut even_count = 0; + let mut odd_count = 0; + + while n > 0 { + let bit = n % 2; + if bit == 1 { + if is_even { + even_count += 1; + } else { + odd_count += 1; + } + } + + is_even = !is_even; + n = n / 2; + } + + vec![even_count, odd_count] + } +} + +// submission codes end + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_2595() { + assert_eq!(vec![1, 2], Solution::even_odd_bit(50)); + assert_eq!(vec![0, 1], Solution::even_odd_bit(2)); + } +}