patternpythonMinor
Valid palindrome solution
Viewed 0 times
palindromesolutionvalid
Problem
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.
Problem
Given a string, determine if it is a palindrome, considering only
alphanumeric characters and ignoring cases.
Example
"A man, a plan, a canal: Panama" is a palindrome. "race a car" is not
a palindrome.
Note
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.
Source Code
Problem
Given a string, determine if it is a palindrome, considering only
alphanumeric characters and ignoring cases.
Example
"A man, a plan, a canal: Panama" is a palindrome. "race a car" is not
a palindrome.
Note
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.
Source Code
def check_valid(source):
i = 0
j = len(source)-1
source =source.lower()
while 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 FalseSolution
Some small nitpicks:
Reviewed code:
- Instead of
i
- Here: ('a'
- It seems like you always forget to put a space between operators:
i+=1should bei += 1.
- Add docstrings to your function
Reviewed code:
def check_valid(source):
""" Return True/False if a string is a palindrome """
i, j, source = 0, len(source) - 1, source.lower()
while 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 FalseCode Snippets
def check_valid(source):
""" Return True/False if a string is a palindrome """
i, j, source = 0, len(source) - 1, source.lower()
while i <= j:
while i < j and not source[i].isalnum():
i += 1
while i < j and not source[j].isalnum():
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 FalseContext
StackExchange Code Review Q#149835, answer score: 4
Revisions (0)
No revisions yet.