1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// @Title: 验证回文字符串 Ⅱ (Valid Palindrome II)
// @Author: 15816537946@163.com
// @Date: 2022-03-26 15:33:56
// @Runtime: 16 ms
// @Memory: 6.4 MB
func validPalindrome(s string) bool {
	isPalindrome := func(lo, hi int) bool {
		for lo < hi {
			if s[lo] != s[hi] {
				return false
			}

			lo++
			hi--
		}
		return true
	}

	for lo, hi := 0, len(s)-1; lo < hi; lo, hi = lo+1, hi-1 {
		if s[lo] != s[hi] {
			return isPalindrome(lo+1, hi) || isPalindrome(lo, hi-1)
		}
	}
	return true
}