私はこのサイトと他のものを見て、Python上の文字列を反復する方法を調べました。特定の部分文字列を見つけて逆にして、 Palindromeを取得します。これは問題ですが、テストケースの中には挑戦しているものがあり、インデックスを作成して見つける方法がわかりません。Pythonパインドロムを探すために文字列を反復する
は、これはすべてのために働く私のコードですが、2つのテスト・ケース:
def countPalindromes(s):
count = 0
firstindex = 0
lastindex = len(str)-1
while firstindex != lastindex and firstindex <= lastindex:
ch1 = s[firstindex:lastindex]
ch2 = s[lastindex:firstindex:-1]
if ch1 == ch2:
count +=1
firstindex +=1
lastindex -=1
return count
このコードは、次の回文の作品:「レースカー」、「」、および「abqcを」。 これらのPalindromes "aaaa"と "abacccaba"では動作しません。
「aaaa」には6つのパリンドロームがあり、「abacccaba」には8つのパリドロームがあります。これは私の問題が発生する場所で、私はそれを理解できません。 "aaaa"のための6つのパリドロームのために、私はaaaa、aaa、aaをそれぞれ2回得る。 "abacccaba"には8つの回文がありますが、私はabacccaba、bacccab、accca、ccc、aba、abaを取得しました。
私はこれが混乱しやすい質問だと理解していますが、「aaaa」は2、「abacccaba」は4つしかないため、問題に近づく方法は失われています。どのように私は部分文字列を切り捨てて、これらの値を取得する任意のアイデアですか?
ありがとうございます!
だから私はいくつかの合計が不足していることに気づいた唯一の人ではない。私は彼らが2よりも大きくなければならないと言及するべきだったが、まだいくらか欠けている。残念ながら、これはコードランナーのものの1つで、期待される出力が必要なものです。私はあなたが提供したものを見て、テストケースを正しく得るためにそれを回避しようと思います! –
もう1つのこと: 'while firstindex!= lastindexとfirstindex <= lastindex:'は '' firstindex
ああ、感謝します! –