ABC198のB問題Palindrome with leading zerosでPythonのスライスを学ぶ
ABC198のB問題を解説しつつ、気づけなかった良い書き方をふりかえります。
整数 N が与えられます。
N を十進法で表した文字列の先頭に 0 個以上の 0 をつけることで、回文にすることはできますか?
とってもシンプルな問題です。
なので最大でも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')
無駄な関数を作ってしまって恥ずかしい。。。