ABC198のB問題Palindrome with leading zerosでPythonのスライスを学ぶ

ABC198のB問題を解説しつつ、気づけなかった良い書き方をふりかえります。

atcoder.jp

整数 N が与えられます。

N を十進法で表した文字列の先頭に 0 個以上の 0 をつけることで、回文にすることはできますか?

とってもシンプルな問題です。
 0 \leq N \leq 10^9なので最大でも10桁ということがわかります。
頭に0を足していって、回文になるか判定します。

実戦では以下のコードで正解しました。

N = input()

# 回文かどうか判定する関数
def check_parlin(moji: str) -> bool:
    stop_idx = len(moji) // 2
    for i in range(stop_idx):
        if moji[i] != moji[len(moji) - 1 - i]:
            return False
    return True


for i in range(11):
    add_0 = '0' * i
    n_str = add_0 + N
    if check_parlin(n_str):
        print('Yes')
        exit()
print('No')

解説を見て、気づいたのですが、回文を判定する関数なんて作ってしまって、恥ずかしい。。。

Pythonのスライスを使うと文字列を簡単に逆順にできます。

T = 'abcd'
print(T[::-1])
# 'dcba'となる

以下のコードで十分でした。。。

N = input()

for i in range(11):
    add_0 = '0' * i
    n_str = add_0 + N
    if n_str == n_str[::-1]:
        print('Yes')
        exit()
print('No')

無駄な関数を作ってしまって恥ずかしい。。。