考えて競プロする

プログラミングコンテストの問題をどう考えて解いたかを記録していくブログです。使用言語はPython3

ABC066-B - ss を解く

ABC066-B - ss

 

与えられた文字列の末尾を削除して

それが「偶文字列」であるかを判定していく問題

(偶文字列とは、同じ文字列を2つ並べてできた文字列)

 

1文字ずつ末尾を消していって

その都度2つに割って一致するかどうかを確認していけばいい

 

以上を踏まえて書いたコードを以下に示す

 

提出したコード

# 入力
S=input()

while True:
  # 末尾を削除
  S=S[:-2]

  if S[:len(S)//2]==S[len(S)//2:]:
    print(len(S))
    exit()
 

上記コードは len 関数と list のスライスを使うことで

以下のように文字列の前半と後半を切り出せることを利用している

 

>>> x='abcdef'
>>> x[:len(x)//2]
'abc'
>>> x[len(x)//2:]
'def'

 

提出結果はACでした