1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
struct Solution; impl Solution { fn remove_duplicates(s: String) -> String { let mut stack: Vec<char> = vec![]; for c in s.chars() { if let Some(&top) = stack.last() { if top == c { stack.pop(); } else { stack.push(c); } } else { stack.push(c) } } stack.iter().collect() } } #[test] fn test() { let s = "abbaca".to_string(); let t = "ca".to_string(); assert_eq!(Solution::remove_duplicates(s), t); }