125 Valid Palindrome
- 給定字串,判斷它是否為迴文,僅考慮英數字元,忽略大小寫。
- Kotlin, Two Pointers
fun isPalindrome(s: String): Boolean {
var left = 0
var right = s.length - 1
while (left < right) {
while (left < right && !s[left].isLetterOrDigit()) left++
while (left < right && !s[right].isLetterOrDigit()) right--
if (s[left].lowercaseChar() != s[right].lowercaseChar()) return false
left++
right--
}
return true
}
- follow up
- 如果不允許額外空間,該怎麼改?(其實上面就是 O(1) space)
- 如果要判斷「幾乎」迴文(可刪除一個字元)呢?(LeetCode 680)
- 如果字串長度很長(上億字符),如何優化效能?
- 可以用遞迴做嗎?