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())); + } +}