给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。
    有效字符串需满足:

    1. 左括号必须用相同类型的右括号闭合。
    2. 左括号必须以正确的顺序闭合。

    image.png
    image.png

    1. func isValid(s string) bool {
    2. if len(s)%2 == 1{//扣号数一定是偶数
    3. return false
    4. }
    5. stack := []byte{}//建立栈
    6. pairs := map[byte]byte{//建立哈希表(映射)
    7. ')':'(',
    8. '}':'{',
    9. ']':'[',
    10. }
    11. for i:=0;i<len(s);i++{//遍历字符串
    12. if pairs[s[i]]>0{//大于零表示该字符是右括号.需要判断进行匹配
    13. //判断len(stack)是否为零是因为左括号被压入栈中,而此时匹配的是右括号,
    14. //若栈为空,则无法进行括号匹配
    15. if len(stack) == 0 || stack[len(stack)-1] !=pairs[s[i]]{
    16. return false
    17. }
    18. //若可以匹配,则左括号出栈
    19. stack = stack[0:len(stack)-1]
    20. }else{//此时表示当前字符为左扣号,需要压入栈中
    21. stack = append(stack,s[i])
    22. }
    23. }
    24. return len(stack) == 0
    25. }
    26. ```[[20. 有效的括号](/problems/valid-parentheses/)]()]()