【ABC198 B】「Palindrome with leading zeros」を解く【Python3】

コンテスト一覧へ

 

文字列に変換した元整数Nの先頭に、0個以上の「0」をつけることで、回文にできるかどうかを判定する問題です。

提出
n = input()

for i in range(10):
    if n==n[::-1]:
        print("Yes")
        exit(0)
    n = "0"+n

print("No")

入力はNのみです。

整数ではなく、文字列として入力しておくと都合がいいです。

for文を使って、文字列nと文字列nの逆順が等しいかどうかを判定します。

(0個の場合もあるので、最初に判定します)

nの先頭に「0」を足して、続けます。

N≦109 なので、ループは最大10回で済みます。

 

余談ですが、他の方が提出していた以下のやり方が格好良かったので紹介します。

提出
n = input()
n = n.rstrip("0")
print(("No", "Yes")[n==n[::-1]])

rstrip() メソッドは、最後から指定文字列を削除します。

「0」以外の文字が出てくるまで「0」を削除してくれるので、この後の文字列nとその逆順を比較するだけでOKです。

出力するときの判定もスマートですね。

(False,True)[条件式]

条件式がTrueであれば、右側のものを返し、そうでなければ左側を返します。

【ABC198】解説記事リスト

コンテスト一覧に戻る

コメントを残す

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