rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;

impl Solution {
    fn simplify_path(path: String) -> String {
        let mut stack: Vec<&str> = vec![];
        let mut res = "".to_string();
        for s in path.split_terminator('/') {
            match s {
                ".." => {
                    stack.pop();
                }
                "" | "." => {
                    continue;
                }
                _ => {
                    stack.push(s);
                }
            }
        }
        for s in stack {
            res += "/";
            res += s;
        }
        if res.is_empty() {
            res += "/";
        }
        res
    }
}

#[test]
fn test() {
    let path = "/home/".to_string();
    let res = "/home".to_string();
    assert_eq!(Solution::simplify_path(path), res);
    let path = "/../".to_string();
    let res = "/".to_string();
    assert_eq!(Solution::simplify_path(path), res);
    let path = "/home//foo/".to_string();
    let res = "/home/foo".to_string();
    assert_eq!(Solution::simplify_path(path), res);
    let path = "/a/./b/../../c/".to_string();
    let res = "/c".to_string();
    assert_eq!(Solution::simplify_path(path), res);
    let path = "/a/../../b/../c//.//".to_string();
    let res = "/c".to_string();
    assert_eq!(Solution::simplify_path(path), res);
    let path = "/a//b////c/d//././/..".to_string();
    let res = "/a/b/c".to_string();
    assert_eq!(Solution::simplify_path(path), res);
}