static const char kNotAParen = 0;
static inline BOOL isOpenParen(char paren) {
return paren == '[' || paren == '(' || paren == '{';
}
static inline BOOL isCloseParen(char paren) {
return paren == ']' || paren == ')' || paren == '}';
}
static inline char closeForOpenParen(char paren) {
if (paren == '{') return '}';
if (paren == '[') return ']';
if (paren == '(') return ')';
return kNotAParen;
}
BOOL isValidSequence(char sequence[]) {
NSUInteger size = sizeof(sequence) / sizeof(char);
Vector stack = Vector<char>();
for (int i = 0; i < size; ++i) {
paren = sequence[i];
BOOL isOpen = isOpenParen(paren);
if (!isOpen && !isCloseParen(paren)) {
return NO;
}
if (isOpen) {
stack.push(paren);
}
else {
if (closeForOpenParen(stack.back()) == paren) {
stack.pop(paren);
}
else {
return NO;
}
}
}
return stack.size() == 0;
}
Last active
April 5, 2017 16:41
-
-
Save dmpv/5f859b22cdd62d943ddfecdf0efb2f41 to your computer and use it in GitHub Desktop.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment