leetcode_rust/
reverse_string.rs

1#![allow(dead_code)]
2
3// The problem has a bug in Rust
4pub fn reverse_string(s: &mut Vec<char>) {
5    if s.len() < 2 {
6        return;
7    }
8    let mut i = 0;
9    let mut j = s.len() - 1;
10    while i < j {
11        s.swap(i, j);
12        i += 1;
13        j -= 1;
14    }
15}
16
17pub fn reverse_string2(s: &mut Vec<char>) {
18    s.reverse();
19}
20
21#[cfg(test)]
22mod tests {
23    use super::*;
24
25    #[test]
26    fn test1() {
27        let mut s = vec!['h', 'e', 'l', 'l', 'o'];
28        reverse_string(&mut s);
29        assert_eq!(s, vec!['o', 'l', 'l', 'e', 'h']);
30    }
31
32    #[test]
33    fn test2() {
34        let mut s = vec!['h', 'e', 'l', 'l', 'o'];
35        reverse_string2(&mut s);
36        assert_eq!(s, vec!['o', 'l', 'l', 'e', 'h']);
37    }
38}