【ABC147 B】「Palindrome-philia」を解く【Python3】

abc147b

コンテスト一覧へ

 

与えられた文字列Sが回文かどうかを判定する問題です。

回文とは、頭から読んでも後ろから読んでも同じ文字列になる文章のことです。

提出
s = input()
s_len = len(s)
ans = 0

for i in range(s_len // 2):
    if s[i] != s[s_len - 1 - i]:
        ans += 1

print(ans)

文字列を受け取り、長さ(文字数)を調べます。

for文を使って、文字を1文字ずつ判定していきます。

反対側にある文字と等しいかどうか(頭から○文字目と後ろから○文字目が等しいか)を調べれば良いので、for文の回数は長さを2で割ったものです。

演算子//は小数点以下を切り捨てます。

長さが奇数であっても、真ん中は判定する必要がないので問題ありません(文字数が7であっても、3回分のfor文で良い)。

 

該当の文字が等しくなかった場合に1を足します。

インデックスが0から始まることに注意して式を書く必要があります。

len()関数

len()関数は、引数で指定したオブジェクトの長さを返します。

文字列の場合は文字数、リストの場合は要素数を取得できます。

len(オブジェクト)
range()関数

range()関数は、連続した数のリストを返します。

引数の指定が1つの場合、stopの指定になります。

引数stopの値は含まれず、最後の数字は「stop-1」です。

range(start,stop,step)

【ABC147】解説記事

コンテスト一覧に戻る

コメントを残す

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