Reginald Reginald - 2 months ago 54
Python Question

Python 3.2 palindrome

I'm doing some python online tutorials, and I got stuck at an exercise:A palindrome is a word which is spelled the same forwards as backwards. For example, the word

racecar

is a palindrome: the first and last letters are the same (r), the second and second-last letters are the same (a), etc. Write a function isPalindrome(S) which takes a string S as input, and returns True if the string is a palindrome, and False otherwise.
These is the code I wrote :

def isPalindrome(S):
if S[0] == S[-1]
return print("True")
elif S[0] == S[-1] and S[1] == S[-2] :
return print("True")
else:
return print("False")


But, if the word is for example ,,sarcas,, , the output is incorect. So I need a fix to my code so it works for any word.

Answer

A one line solution but O(n) and memory expensive is :

def isPalindrome(word) : return word == word[::-1]

A O(n/2) solution that uses the same ammount of memory is:

def palindrome(word):
   for i in range(len(word)//2):
         if word[i] != word[-1-i]:
                 return False
   return True

This is the trick @LennartRegebro mentioned