I'm working on this valid palindrome problem. Any advice on code bug, better idea for low algorithm execution time complexity, code style, etc. are highly appreciated.
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
"A man, a plan, a canal: Panama" is a palindrome. "race a car" is not a palindrome.
Have you consider that the string might be empty? This is a good question to ask during an interview. For the purpose of this problem, we define empty string as valid palindrome.
def check_valid(source): i = 0 j = len(source)-1 source =source.lower() while i <= j: while i<=j and not ('a'<=source[i]<='z'): i+=1 while i<=j and not ('a'<=source[j]<='z'): j-=1 if i<=j: if source[i] != source[j]: return False else: i+=1 j-=1 if i > j: return True if __name__ == "__main__": print check_valid('A man, a plan, a canal: Panama') # return True print check_valid('race a car') # return False