Дана строка, s содержащая только символы '(', ')', '{', '}', '['и ']', определите, является ли входная строка допустимой. Входная строка действительна, если: Example 1: Input: s = "()" Output: true Example 2: Input: s = "()[]{}" Output: true Example 3: Input: s = "(]" Output: false Example 4: Input: s = "([])" Output: true Ограничения: пример решения на Go:
func isValid(s string) bool { var notChange bool var countPrev,countNext int for !notChange { nextCheck: for i, r := range s { if i < len(s)-1 { if check(r, rune(s[i+1])) { if len(s) == 2 { return true } s = s[:i]+s[i+2:] goto nextCheck } } } countNext = len(s) if countNext == 0 { return true } if countNext == countPrev { notChange = true break } countPrev = countNext } return len(s) == 0 } var list = map[rune]rune{ ')': '(', ']': '[', '}': '{', } func check(prev, next rune)bool{ return prev == list[next] }
Данный вариант подразумевает при каждом нахождении замыканий убирать их и проходить по оставшим