aboutsummaryrefslogtreecommitdiff
path: root/challenge-328/benjamin-andre/rust/ch-1.rs
blob: 49fa320dc93d18dca548d55f178f740371cb4249 (plain)
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
#!/bin/sh
//usr/bin/env rustc --test $0 -o kachow && ./kachow --nocapture; rm -f kachow ; exit

fn replace(s: &str) -> String {
    let mut res: Vec<char> = s.chars().collect();
    let n = res.len();
    for i in 0..n {
        if res[i] == '?' {
            for c in 'a'..='z' {
                if (i == 0 || res[i - 1] != c) && (i == n - 1 || res[i + 1] != c) {
                    res[i] = c;
                    break;
                }
            }
        }
    }
    res.into_iter().collect()
}

#[test]
fn example() {
    assert_eq!(replace("a?z"), "abz");
    assert_eq!(replace("pe?k"), "peak");
    assert_eq!(replace("gra?te"), "grabte");
}