Skip to content

Instantly share code, notes, and snippets.

@astrokin
Created September 30, 2019 14:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save astrokin/f0a462e39b30708a7565e9f29f3f842a to your computer and use it in GitHub Desktop.
Save astrokin/f0a462e39b30708a7565e9f29f3f842a to your computer and use it in GitHub Desktop.
// Complete the isBalanced function below.
func isBalanced(s: String) -> String {
let openBrackets = "{([".replacingOccurrences(of: "", with: "")
let closeBrackets = "})]"
let brackets = ["]": "[", ")": "(", "}": "{"]
guard s.count > 1 else {
return "NO"
}
guard !closeBrackets.contains(s.first!) else { return "NO" }
var stack: [Character] = []
for char in s {
if openBrackets.contains(char) {
stack.append(char)
} else if closeBrackets.contains(char) {
if stack.isEmpty || String(stack.popLast()!) != brackets[String(char)]! {
return "NO"
}
}
}
return stack.isEmpty ? "YES" : "NO"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment