leetcode之20有效的括號Golang
阿新 • • 發佈:2020-09-10
本題採用了棧的思想
在Go語言中使用棧是一件非常方便的事情,只需要使用切片就可以了
本題的思路將從括號字串中讀取到的字元進行出入棧操作
如果是左括號“(、[、{”,就直接入棧
如果是右括號,首先判斷棧是否非空
如果是空的,那麼棧中沒有左括號與當前遍歷到的右括號匹配,就返回錯誤
如果不是空的,那麼就讀取棧頂的左括號,判斷這個左括號與當前遍歷到的右括號是否匹配
如果不匹配,就直接返回錯誤
如果匹配,就從棧頂彈出這個左括號
遍歷完整個括號字串以後,檢查棧是否為空
如果棧為空,就返回正確,說明括號匹配
如果棧不為空,就返回錯誤,說明棧中還遺留了左括號沒有與之對應的右括號來匹配
程式碼如下:
func isValid(s string) bool { var brakets []byte for _, v := range s { switch v { case '(', '[', '{': brakets = append(brakets, byte(v)) case ')', ']', '}': if len(brakets) == 0 { return false } if v == ')' && brakets[len(brakets)-1] == '(' || v == ']' && brakets[len(brakets)-1] == '[' || v == '}' && brakets[len(brakets)-1] == '{' { brakets = brakets[:len(brakets)-1] } else { return false } default: return false } } if len(brakets) > 0 { return false } return true }