美文网首页
swift栈的面试题

swift栈的面试题

作者: 前年的邂逅_Jerry | 来源:发表于2019-10-19 00:07 被阅读0次

给出一个绝对路径,如:
1、/a/b/c/../ 输入/a/b
2、/a/b/./../ 输出/a
3、/a/b/c/../ 输入/a/b

注:
1、 ‘..’ 表示返回上个路径 ;
2、‘.’ 表示停留在当前路径;

    override func viewDidLoad() {
        super.viewDidLoad()
        let str = simplifyPath("/a/b/../c/d/../../e/./a/./../c/../")
        print(str)
    }
    func simplifyPath(_ path : String) -> String {
        let paths = path.components(separatedBy: "/")
        print(paths)
        var stack = [String]()
        for str in paths {
            guard  str != "" && str != "." else {
                continue
            }
            
            if str == ".."{
                //出栈
                if stack.count > 0{
                    stack.popLast()
                }
            }else{
                //进栈
                stack.append(str)
            }
        }
        return stack.reduce("") { (res, x) -> String in
            return res + "/" + x
        }
    }

相关文章

网友评论

      本文标题:swift栈的面试题

      本文链接:https://www.haomeiwen.com/subject/ikqgmctx.html