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
26
27
// @Title: 最多删除一个字符得到回文 (最多删除一个字符得到回文)
// @Author: 15816537946@163.com
// @Date: 2022-03-26 15:28:11
// @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

}