Skip to content

Commit ba4f850

Browse files
authored
Merge pull request soapyigu#227 from rockbruno/patch-1
Simplify ValidPalindromeII.swift
2 parents 15df3ae + 799e15d commit ba4f850

File tree

1 file changed

+11
-19
lines changed

1 file changed

+11
-19
lines changed

String/ValidPalindromeII.swift

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,33 +8,25 @@
88

99
class ValidPalindromeII {
1010
func validPalindrome(_ s: String) -> Bool {
11-
var i = 0, j = s.count - 1
12-
let sChars = Array(s)
13-
14-
while i < j {
15-
if sChars[i] != sChars[j] {
16-
return isPalindrome(sChars, i + 1, j) || isPalindrome(sChars, i, j - 1)
17-
} else {
18-
i += 1
19-
j -= 1
20-
}
21-
}
22-
23-
return true
11+
let array = Array(s)
12+
return isPalindrome(array, 0, array.count - 1)
2413
}
2514

26-
fileprivate func isPalindrome(_ s: [Character], _ i: Int, _ j: Int) -> Bool {
15+
fileprivate func isPalindrome(_ array: [Character], _ i: Int, _ j: Int, alreadyRemoved: Bool = false) -> Bool {
2716
var i = i, j = j
28-
2917
while i < j {
30-
if s[i] != s[j] {
31-
return false
18+
if array[i] != array[j] {
19+
if alreadyRemoved {
20+
return false
21+
} else {
22+
return isPalindrome(array, i + 1, j, alreadyRemoved: true) ||
23+
isPalindrome(array, i, j - 1, alreadyRemoved: true)
24+
}
3225
} else {
3326
i += 1
3427
j -= 1
3528
}
3629
}
37-
3830
return true
3931
}
40-
}
32+
}

0 commit comments

Comments
 (0)