package main import ( "fmt" ) func main() { var s string for { n, _ := fmt.Scan(&s) if n == 0 { break } else { fmt.Printf("%d\n",Depth(s)) } } } func Depth(s string)int { // 记录最大深度 max := 0 // 记录多余的'(" cur := 0 for _,val := range s { if val == '('{ if cur == max { max ++ } cur++ }else { cur -- } } return max }
左括号的连续个数即是一组括号字符串的深度
用cur记录一组连续的'(',如果max=cur,则接下来的左括号+1的时候,最大深度max也会+1
如果cur<max,则说明当前的深度还没达到前面有记录的最大深度,不用理会