How to sort a string with digits and letters (letters before digits) in Rust

1 Answer

0 votes
use std::cmp::Ordering;

fn custom_sort(input: &str) -> String {
    let mut chars: Vec<char> = input.chars().collect();

    chars.sort_by(|&a, &b| {
        if a.is_alphabetic() && b.is_digit(10) {
            return Ordering::Less; // Letters before digits
        }
        if a.is_digit(10) && b.is_alphabetic() {
            return Ordering::Greater; // Digits after letters
        }

        a.cmp(&b)
    });

    chars.iter().collect()
}

fn main() {
    let input = "d2a4b3c1";
    let sorted_input = custom_sort(input);

    println!("Custom sorted string: {}", sorted_input);
}

  
   
/*
run:
   
Custom sorted string: abcd1234
   
*/

 

 



answered May 26 by avibootz
edited May 27 by avibootz
...