-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathvalidPalindrome.go
More file actions
36 lines (31 loc) · 891 Bytes
/
Copy pathvalidPalindrome.go
File metadata and controls
36 lines (31 loc) · 891 Bytes
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
28
29
30
31
32
33
34
35
36
/* https://leetcode.com/problems/valid-palindrome-ii/description/
Given a non-empty string s, you may delete at most one character. Judge whether you can make it a palindrome.
Example 1:
Input: "aba"
Output: True
Example 2:
Input: "abca"
Output: True
Explanation: You could delete the character 'c'.
Note:
The string will only contain lowercase characters a-z. The maximum length of the string is 50000.
*/
package lstring
func validPalindrome(s string) bool {
var isPalindrome func(s string, start, end, count int) bool
isPalindrome = func(s string, start, end, count int) bool {
for start < end {
if s[start] != s[end] {
if count == 0 {
return false
}
count--
return isPalindrome(s, start+1, end, count) || isPalindrome(s, start, end-1, count)
}
start++
end--
}
return true
}
return isPalindrome(s, 0, len(s)-1, 1)
}