文字列が回文であるかどうかを検出する再帰関数を作成するのに助けが必要です。しかし、私はループを使用できません。再帰的でなければなりません。誰かがこれがどのように行われるかを私に示すのを手伝ってもらえますか?私はPythonを使用しています。
def ispalindrome(Word):
if len(Word) < 2: return True
if Word[0] != Word[-1]: return False
return ispalindrome(Word[1:-1])
そしてここに最高のワンライナーがあります
def ispalindrome(Word):
return Word == Word[::-1]
文字列の長さが0文字または1文字の場合、それは回文です。
文字列の最初と最後の文字が同じで、残りの文字(Pythonでは[1: -1]
スライスだと思いますが、私のPythonは少し錆びています))が回文である場合、それは回文です。
さて、それを文字列をとる回文関数として書いてください。それはそれ自身を呼びます。
ここに別の視点があります
回文文字列は
いくつかの手紙、x。
いくつかの回文のsubstrinng。
同じ文字xが繰り返されました。
また、「エルバを見たのは可能だった」という適切な英語の文章が与えられる場合があることに注意してください。句読点付き。回文チェッカーは、句読点を静かにスキップする必要がある場合があります。また、ケースを考慮せずに静かに一致する必要があるかもしれません。これは少し複雑です。
いくつかの主要な句読点。いくつかの手紙、x。
いくつかの回文部分文字列。
大文字と小文字を区別せずに繰り返される文字x。末尾の句読点。
そして、定義上、長さゼロの文字列は回文です。また、(句読点を削除した後の)1文字の文字列は回文です。
とにかくコードを投稿していて、ワンライナーはまだ投稿されていないので、ここに行きます:
def palindrome(s):
return len(s) < 2 or s[0] == s[-1] and palindrome(s[1:-1])
関数は文字列を期待する必要があります。文字列に複数の文字がある場合は、最初の文字と最後の文字を比較します。 1文字または0文字の場合、trueを返します。 2つの文字が等しい場合は、最初と最後の文字を除いて、文字列を使用して関数を再度呼び出します。それらが等しくない場合はfalseを返します。
palindrom( Word):
IF length of Word 1 or 0 THEN
return 0;
IF last and first letter equal THEN
Word := remove first and last letter of Word;
palindrom( Word);
ELSE
return false;
単純な再帰関数を考える方法は次のとおりです...問題を裏返して、そのように考えてください。どのようにして回文を再帰的に作成しますか?これが私がそれをする方法です...
def make_palindrome():
maybe:
return ""
elsemaybe:
return some_char()
else:
c = some_char()
return c + make_palindrome() + c
次に、それを裏返してテストを作成できます。
a=raw_input("enter the string:")
b=len(a)
c=0
for i in range(b):
if a[i]==a[-(i+1)]:
c=c+1
if c==b:
print a,"is polindrome"
else:
print a,"is not polindrome"
私の解決策
#To solve this I'm using the stride notation within a slice [::]
def amazonPalindrome(input):
inputB = input
input = input[::-1]
#print input
noPalindrome = inputB + " is not a palindrome"
isPalindrome = inputB + " is a palindrome"
#compare the value of the reversed string to input string
if input[0]!= input[-1]:
print noPalindrome
else:
print isPalindrome
#invoking the def requires at least 1 value or else it fails
#tests include splitting the string,mixing integers, odd amount palindromes.
#call the def
amazonPalindrome('yayay')