Given a string s, return true if the s can be palindrome after deleting at most one character from it.
문자열 s가 주어지면, 최대 한 문자를 삭제한 후 s가 회문일 수 있으면 true를 반환합니다.
Example 1:
Input: s = "aba"
Output: true
Example 2:
Input: s = "abca"
Output: true
Explanation: You could delete the character 'c'.
Example 3:
Input: s = "abc"
Output: false
Constraints:
- 1 <= s.length <= 10^5
- s consists of lowercase English letters.
코드
- 두 포인터가 가리키는 두 문자가 같지 않으면 회문이 아니기 때문에 한 문자를 삭제해야 한다.
class Solution {
fun validPalindrome(s: String): Boolean {
var l = 0
var r = s.lastIndex
while (l < r) {
if (s[l] != s[r]) {
val skipL = s.substring(l + 1..r)
val skipR = s.substring(l, r)
return (skipL == skipL.reversed() || skipR == skipR.reversed())
}
l++
r--
}
return true
}
}