Python 3.2 palindrome

拈花ヽ惹草 提交于 2020-01-13 07:09:28

问题


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.


回答1:


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




回答2:


def is_palindrome(text):
    text = text.replace(' ', '')
    text = text.casefold()
    if list(text) == list(reversed(text)):
        return True
    else:
        return False



回答3:


Try this

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



回答4:


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



回答5:


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



回答6:


Another way of doing it using recursion is:

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



回答7:


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


来源:https://stackoverflow.com/questions/11758791/python-3-2-palindrome

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!