fn reverse_middle_n_characters(s: &str, n: usize) -> String {
if n <= 0 || n > s.len() {
return s.to_string();
}
let start = (s.len() - n) / 2;
let end = start + n;
let before_middle = &s[0..start];
let middle: String = s[start..end].chars().rev().collect();
let after_middle = &s[end..];
format!("{}{}{}", before_middle, middle, after_middle)
}
fn main() {
let s = "abCDEFgh";
let n = 4;
println!("{}", reverse_middle_n_characters(s, n));
}
/*
run:
abFEDCgh
*/