Skip to content

Instantly share code, notes, and snippets.

@deepakkumarnd
Created May 13, 2019 12:34
Show Gist options
  • Select an option

  • Save deepakkumarnd/a5042179d4d0c9c8ac1046bc76606394 to your computer and use it in GitHub Desktop.

Select an option

Save deepakkumarnd/a5042179d4d0c9c8ac1046bc76606394 to your computer and use it in GitHub Desktop.

Revisions

  1. deepakkumarnd created this gist May 13, 2019.
    26 changes: 26 additions & 0 deletions valid_brace.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,26 @@
    TOKENS = { '}' => '{', ')' => '(', ']' => '[' }.freeze

    def valid_brace?(input)
    stack = []
    valid = true

    input.each_char do |c|
    case c
    when '(', '[', '{' then stack.push(c)
    when ')', ']', '}' then valid = (stack.pop == TOKENS[c])
    else
    valid = false
    end

    break unless valid
    end

    valid && stack.empty?
    end

    inputs = ['()[]{}', '([{}])', '[({})](]', '[(])', '(}']

    inputs.each do |input|
    text = valid_brace?(input) ? "valid" : "invalid"
    puts "#{input} is #{text}"
    end