NISHIO Hirokazu[Translate]
arc019_2
一文字書き換えて回文にならないパターンが何件あるか数え上げる問題
対応する文字と一致してるかどうかをまずチェック
奇数個の中央以外に関して
ズレが1個であって、その文字がズレてる文字だと、書き換えて同じ文字になった時に回文になる
それ以外のパターンでは回文にならない
奇数個の中央に関して
ズレがゼロなら何をやっても回文
非ゼロなら何をやっても回文でない
間違えずに数え上げる
間違えまくりなのでテストが手軽に走らせられる仕組みは大事
間違いの例
添え字アクセス1つズレ S[-i] S[-1-i]
==と!=の間違い
thenとelseを逆にしてた
%2と&1が混ざって&2にしてた
よくこんなに間違えたもんだ
python
def solve(S): ret = 0 N = len(S) if N == 1: return 0 xs = [S[i] != S[-1-i] for i in range(N // 2)] sums = sum(xs) for x in xs: if x: if sums == 1: ret += 24 * 2 else: ret += 25 * 2 else: ret += 25 * 2 if N & 1: if sums != 0: ret += 25 return ret


"Engineer's way of creating knowledge" the English version of my book is now available on [Engineer's way of creating knowledge]

(C)NISHIO Hirokazu / Converted from [Scrapbox] at [Edit]