Balanced Brackets

要效率的话用arr 代替stack

package main

import (
    "fmt"
)

func main(){
    var num int
    fmt.Scanln(&num)

    f := func(t []byte) bool {
        h := make([]byte, len(t))
        var top int
        for _, v := range t {
            switch v {
            case '{', '[', '(':
                h[top] = v
                top++
            case ')', ']', '}':
                if top-1 < 0 {
                    return false
                }
                if v == ')' && h[top-1] != '(' {
                    return false
                } else if v == ']' && h[top-1] != '[' {
                    return false
                } else if v == '}' && h[top-1] != '{' {
                    return false
                }
                top--
            }
        }
        if top == 0{
            return true
        }
        return false
    }
    result := make([]bool, 0, num)
    for i := 0; i < num; i++ {
        var t string
        fmt.Scanln(&t)
        result = append(result, f([]byte(t)))
    }                                                                                                                                                                                                                   
     for _, val := range result {
        if val == true {
            fmt.Println("YES")
        } else {
            fmt.Println("NO")
        }
    }
}
    
 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容