Description
https://leetcode.com/problems/valid-palindrome/
Given a string s
, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
Example 1:
Input: s = "A man, a plan, a canal: Panama" Output: true Explanation: "amanaplanacanalpanama" is a palindrome.
Example 2:
Input: s = "race a car" Output: false Explanation: "raceacar" is not a palindrome.
Constraints:
1 <= s.length <= 2 * 105
s
consists only of printable ASCII characters.
Explanation
A palindrome, and its reverse, are identical to each other.
Python Solution
class Solution:
def isPalindrome(self, s: str) -> bool:
s = s.lower()
s_forward = ""
s_backward = ""
for c in s:
if c.isalnum():
s_forward += c
s_backward = c + s_backward
return s_forward == s_backward
- Time complexity: O(N).
- Space complexity: O(N).
Hi! I’ve posted my solution below. Could you tell me why for some cases I get an index out of bounds exception?
class Solution {
public boolean isPalindrome(String s) {
char[] arr = s.toCharArray();
int end = s.length() – 1;
for(int start = 0; start
= s.length()) {return false;
}
start++;
}
while(isLetter(arr[end]) == false) {
if(end = ‘a’ && c = ‘A’ && c <= 'Z') {
return true;
}
return false;
}
}