我寫了一個示例程序,檢查括號是否平衡。我試圖優化它,這是我可以提出的最好的。不過,我期待着能否進一步改進。我也不確定這是否是一個有效的提問。任何想法和建議如何改進檢查括號是否平衡的程序?
func checkBalancedParenthesis(parenthesis: String) -> (Bool,String) {
var stack = Stack<Character>()
for character in parenthesis.characters {
guard let check = try? checkValidPattern(a: ("!",character)) else {
return (false,"Pattern is not valid")
}
if let elem = stack.top, try! checkValidPattern(a: (elem,character)) {
stack.pop()
}
else {
stack.push(item: character)
}
}
return (stack.isEmpty,stack.isEmpty ? "Balanced": "Un-Balanced")
}
func checkValidPattern(a: (Character,Character)) throws -> Bool {
let validList: [Character] = ["(",")","[","]","}","{","<",">"]
switch a
{
case ("(",")"):
return true
case ("[","]"):
return true
case ("{","}"):
return true
case ("<",">"):
return true
case let (_,char) where validList.contains(char) == true:
return false
default:
throw InvalidPattern.chracterNotValid
}
}
「括號是否平衡」是什麼意思?單詞括號是單數名詞。 –
如果您的程序按預期工作,並且您正在尋找審查和可能的改進,那麼codereview.stackexchange.com是正確的網站。 –
也比較https://codereview.stackexchange.com/questions/136514/swift-hackerrank-balanced-brackets –