fn main() { println!("Hello, world!"); let tests = [ ("bcabc", "abc"), ("cbacdcbc", "acdb") ]; for test in tests { println!("{:?} is {:?} should be {:?}", test.0, Solution::remove_duplicate_letters(test.0.to_string()), test.1); } } struct Solution; impl Solution { pub fn remove_duplicate_letters(s: String) -> String { let mut a: Vec = Vec::with_capacity(s.len()); let start = s.chars().enumerate().reduce(|a,b| if a.1 < b.1 {a} else {b}); for c in s.chars().skip(start.unwrap().0) { if a.last().is_none() || c > *a.last().unwrap() { a.push(c); } } a.iter().collect::() } }