package main

/**
  * 
  * @param s string字符串 
  * @return bool布尔型
*/
func isValid( s string ) bool {
    str := s
	if len(str) == 0 {
		return true
	}
	stack := make([]string, 0)
	for i := 0; i < len(str); i++ {
		if str[i] == '(' || str[i] == '[' || str[i] == '{' {
			stack = append(stack, string(str[i]))
		} else {
			if len(stack) == 0 || getAdapt(stack[len(stack)-1]) != string(str[i]) {
				return false
			}
			stack = stack[:len(stack)-1]
		}
	}
	if len(stack) != 0 {
		return false
	}
	return true
}

func getAdapt(s string) string {
	switch s {
	case "(":
		return ")"
	case "[":
		return "]"
	case "{":
		return "}"
	}
	return ""
}