【ABC159 B】「String Palindrome」を解く【Python3】

abc159b

コンテスト一覧へ

 

文字列Sが「強い回文」の条件に合っているかどうかを判定する問題です。

提出
s = input()
n = len(s)
s1 = s[:(n-1)//2]
s2 = s[(n+3)//2-1:n]

if s != s[::-1] or s1 != s1[::-1] or s2 != s2[::-1]:
    print("No")
else:
    print("Yes")

スライス機能を用いて文字列を取得し、強い回文の条件と合致しているか、if文で判定しています。

s[::-1]で文字列を反転できます。

スライス機能

スライスを用いてインデックスを指定すると、特定の範囲の文字列を取得することができます。

インデックスは0から始まることに注意です。

開始インデックスから終了インデックスの一つ前まで取得します。

s = "atcoder"
print(s[2:5])
# > "cod"

 

実は、sが回文であり、s1も回文であれば、必然的にs2も回文になるので、最後の「s2 != s2[::-1]」は必要ありません。

【ABC159】解説記事リスト

コンテスト一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。