## Python 3.2 palindrome

2020-07-30 00:26发布

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 == S[-1]
return print("True")
elif S == S[-1] and S == 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.

8条回答

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 amount 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

Here's my solution:

``````def isPalindrome(S):
l = len(S)-1
for i in range(0,l):
if S[i]!=S[l-i]:
return False
return True
``````

Another way of doing it using recursion is:

``````def isPalindrome(word):
if len(word) <= 1: return True
return (word == word[-1]) and isPalindrome(word[1:-1])
``````

this is my solution S = input("Input a word: ")

``````def isPalindrome(S):
for i in range(0, len(S)):
if S[0 + i] == S[len(S) - 1]:
return "True"
else:
return "False"
print(isPalindrome(S))
``````

Try this

``````word='malayalam'
print(word==word[::-1])
``````

Here is my solution.

``````S = input("Input a word: ")

def isPalindrome(S):
for i in range(0, len(S)):
if S[0 + i] == S[len(S) - 1]:
return "True"
else:
return "False"
print(isPalindrome(S))
``````