rs: add «2864. Maximum Odd Binary Number»

Signed-off-by: Matej Focko <mfocko@redhat.com>
This commit is contained in:
Matej Focko 2024-03-01 19:01:09 +01:00
parent 981c119d36
commit 8d4fc53789
Signed by: mfocko
GPG key ID: 7C47D46246790496

View file

@ -0,0 +1,21 @@
use std::cmp;
impl Solution {
pub fn maximum_odd_binary_number(s: String) -> String {
let mut bits: Vec<char> = s.chars().collect();
// sort in reverse order, all ones are at the beginning
bits.sort_unstable_by_key(|&x| cmp::Reverse(x));
// find the last one
let i = bits.iter().rposition(|&x| x == '1').unwrap();
// and swap with the last zero to obtain odd integer
let last_index = bits.len() - 1;
if i < last_index {
bits.swap(i, last_index);
}
bits.into_iter().collect()
}
}