美文网首页
Swift算法:Verify Preorder Serializ

Swift算法:Verify Preorder Serializ

作者: 我偏笑_NSNirvana | 来源:发表于2016-04-28 21:10 被阅读56次
题目
class Solution {
    func isValidSerialization(preorder: String) -> Bool {
        if preorder == "" || preorder == "#,#" {
            return false
        }
        
        if preorder == "#" {
            return true
        }
        
        let array = preorder.componentsSeparatedByString(",")
        
        var stack: [String] = []
        
        for i in 0 ..< array.count {
            stack.append(array[i])
            while checkTop(stack) {
                for _ in 0 ..< 3 {
                    stack.popLast()
                }
                if stack.count == 0 {
                    if i == array.count-1 {
                        return true
                    } else {
                        return false
                    }
                }
                stack.append("#")
            }
        }
        return false
    }
    
    func checkTop(stack: [String]) -> Bool {
        let count = stack.count
        guard count > 1 else {
            return false
        }
        if stack[count-1] == "#" && stack[count-2] == "#" {
            return true
        } else {
            return false
        }
    }
}

相关文章

网友评论

      本文标题:Swift算法:Verify Preorder Serializ

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