1 回答

TA貢獻1786條經(jīng)驗 獲得超13個贊
您曾經(jīng)len(s)-1找到 的最后一個索引arr,但它應(yīng)該是len(arr)-1。
這是您的代碼的工作版本,它修復(fù)了一些額外的錯誤,并避免了對單個字符的不必要的字符串轉(zhuǎn)換。https://go.dev/play/p/sazf2RguoIr
package main
import "fmt"
func isValid(s string) bool {
var arr []rune
for _, c := range s {
if c == '(' || c == '[' || c == '{' {
arr = append(arr, c)
} else if c == ')' || c == ']' || c == '}' {
if len(arr) == 0 {
return false
}
var last rune
arr, last = arr[:len(arr)-1], arr[len(arr)-1]
if c == ')' && last != '(' || c == ']' && last != '[' || c == '}' && last != '{' {
return false
}
}
}
return len(arr) == 0
}
func main() {
cases := []string{
"()[({}())]",
"(]",
"((())",
"{{{}}}",
"{{{[][][]}}}",
}
for _, c := range cases {
fmt.Println(c, isValid(c))
}
}
- 1 回答
- 0 關(guān)注
- 113 瀏覽
添加回答
舉報