回文数/文字列の奇数/偶数の長さをチェックするのは良い考えですか? 私が見つけたほとんどのスニペットは、この基本的なテストを行っていません。長さが偶数なら回文にはなりませんよね?
if len(var) % 2 != 0:
# could be a palindrome, continue...
else:
break
それとも、最初と最後の数字/文字を直接比較し始める方が良い(つまり速い)のでしょうか?
編集: わかりました、ばかげた質問です。よく考えるべきでした! :)
回文数/文字列の奇数/偶数の長さをチェックするのは良い考えですか? 私が見つけたほとんどのスニペットは、この基本的なテストを行っていません。長さが偶数なら回文にはなりませんよね?
if len(var) % 2 != 0:
# could be a palindrome, continue...
else:
break
それとも、最初と最後の数字/文字を直接比較し始める方が良い(つまり速い)のでしょうか?
編集: わかりました、ばかげた質問です。よく考えるべきでした! :)
回文をチェックする最も簡単な方法は、単純に文字列をその逆と比較することです。
def ispalindrome(s):
return s == s[::-1]
これは、負のステップで拡張されたスライスを使用して、逆方向に歩きs
、逆を取得します。
baab = 回文で、長さ 4 は偶数です
これを試して:
is_palindrome = lambda s : all(s1==s2 for s1,s2 in zip(s[:len(s)/2],s[-1:-(len(s)+1)/2:-1]))
前半と後半のみをチェックし、不一致が見つかるとすぐに短絡します。
単純なケース: aa.
より複雑なケース: aaaa.
等々。
長さの文字列でさえ、回文になることがあります。ウィキペディアは、この制限について何も述べていません。
n=raw_input("Enter a string==>")
n=int(n)
start=0
term=n
while n>0:
result=n%10
start=start*10+result
n=n/10
print start
if term==start:
print "True"
else:
print "False"