From 7b042ef4be3edd0ffed492d47d47b5ea6fb27c59 Mon Sep 17 00:00:00 2001 From: jackfiled Date: Thu, 27 Mar 2025 14:25:09 +0800 Subject: [PATCH] 20250327 finished. --- src/problem/mod.rs | 2 ++ ...nimum_cost_to_make_all_characters_equal.rs | 34 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 src/problem/p2712_minimum_cost_to_make_all_characters_equal.rs diff --git a/src/problem/mod.rs b/src/problem/mod.rs index e525f24..bdcf1ca 100644 --- a/src/problem/mod.rs +++ b/src/problem/mod.rs @@ -562,3 +562,5 @@ mod p2255_count_prefixes_of_a_given_string; mod p2711_difference_of_number_of_distinct_values_on_diagonals; mod p2829_determine_the_minimum_sum_of_a_k_avoiding_array; + +mod p2712_minimum_cost_to_make_all_characters_equal; diff --git a/src/problem/p2712_minimum_cost_to_make_all_characters_equal.rs b/src/problem/p2712_minimum_cost_to_make_all_characters_equal.rs new file mode 100644 index 0000000..496739c --- /dev/null +++ b/src/problem/p2712_minimum_cost_to_make_all_characters_equal.rs @@ -0,0 +1,34 @@ +/** + * [2712] Minimum Cost to Make All Characters Equal + */ +pub struct Solution {} + +// submission codes start here + +impl Solution { + pub fn minimum_cost(s: String) -> i64 { + let mut result = 0; + let s: Vec = s.bytes().collect(); + + for i in 1..s.len() { + if s[i] != s[i - 1] { + result += i.min(s.len() - i) as i64; + } + } + + result + } +} + +// submission codes end + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_2712() { + assert_eq!(2, Solution::minimum_cost("0011".to_owned())); + assert_eq!(9, Solution::minimum_cost("010101".to_owned())); + } +}