7

回文数/文字列の奇数/偶数の長さをチェックするのは良い考えですか? 私が見つけたほとんどのスニペットは、この基本的なテストを行っていません。長さが偶数なら回文にはなりませんよね?

if len(var) % 2 != 0:
  # could be a palindrome, continue...
else:
  break

それとも、最初と最後の数字/文字を直接比較し始める方が良い(つまり速い)のでしょうか?

編集: わかりました、ばかげた質問です。よく考えるべきでした! :)

4

8 に答える 8

25

ABBA -偶数の長さを意味する 4 文字の回文の例。

回文とは、単語、語句、数字、またはその他の一連の文字で、同じように前後に読みます...

于 2010-01-19T17:20:30.003 に答える
10

回文をチェックする最も簡単な方法は、単純に文字列をその逆と比較することです。

def ispalindrome(s):
   return s == s[::-1]

これは、負のステップで拡張されたスライスを使用して、逆方向に歩きs、逆を取得します。

于 2010-01-19T17:36:45.050 に答える
8

baab = 回文で、長さ 4 は偶数です

于 2010-01-19T17:17:41.057 に答える
3

これを試して:

is_palindrome = lambda s : all(s1==s2 for s1,s2 in zip(s[:len(s)/2],s[-1:-(len(s)+1)/2:-1]))

前半と後半のみをチェックし、不一致が見つかるとすぐに短絡します。

于 2010-01-19T20:47:20.900 に答える
2

単純なケース: aa.

より複雑なケース: aaaa.

等々。

于 2010-01-19T17:40:19.330 に答える
1

長さの文字列でさえ、回文になることがあります。ウィキペディアは、この制限について何も述べていません。

于 2010-01-19T17:20:22.033 に答える
0
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"
于 2010-08-10T09:59:10.060 に答える