与えられた文字列Sの部分文字列の中で、最も長いACGT文字列の長さを求める問題です。
提出
s = input()
cnt = 0
ans = 0
for i in s:
if i in 'ACGT':
cnt += 1
ans = max(ans,cnt)
else:
cnt = 0
print(ans)
問題文にあるように、Sは「英大文字からなる文字列」ですので、文字列として扱います。
for文を用いて、1文字目から調べ、その文字が「ACGT」のどれかであれば、カウント数を増やします。また、ACGTでない場合にはカウントを0に戻します。
cntがansよりも大きければ、max()で上書きされるので、最後にansを出力します。
余談ですが、この問題は過去にも一度解いていて、その時にはfor文の中身を以下のように書いてました。
for i in range(len(s)):
if s[i]=="A" or s[i]=="C" or s[i]=="T" or s[i]=="G":
cnt += 1
ans = max(ans,cnt)
else:
cnt = 0
ゴリ押し感……。
こんな感じに書いても、正解です。