Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # '(', '{', '[' are called "openers."
- # ')', '}', ']' are called "closers."
- # Write an efficient function that tells us whether or not an input string's openers and closers are properly nested.
- # Examples:
- # "{ [ ] ( ) }" should return True
- # "{ [ ( ] ) }" should return False
- # "{ [ }" should return False
- def is_valid code
- openers_to_closers = {
- '(' => ')',
- '{' => '}',
- '[' => ']',
- }
- openers = openers_to_closers.keys
- closers = openers_to_closers.values
- openers_stack = []
- code.split('').each do |char|
- if openers.include? char
- openers_stack << char
- else
- if openers_stack.empty?
- return false
- else
- lastest_pushed_to_stack = openers_stack.pop()
- if !(openers_to_closers[lastest_pushed_to_stack] == char)
- return false
- end
- end
- end
- end
- return openers_stack == []
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement