https://atcoder.jp/contests/abc122/tasks/abc122_b
解説
https://atcoder.jp/contests/abc122/submissions/4702739
Sの長さがとても短いので、Sの部分文字列すべてについて考えることができる。
部分文字列S[L...R]について、ACGT文字列であるかを判定するには、全ての文字において、
"ATCG"のいずれかでないことを判定すればいい。
これはT="ATCG"とおけば、Tの中ならある文字が存在するかを判定すればいい。
部分文字列のある文字について、stringのfindメソッドで検索して、存在しない文字があれば、
"ATCG"のいずれかではないので、条件を満たさないものとする。
あとは、条件を満たす部分文字列の長さの最大値を答えればいい。
string S; int N; string T = "ATCG"; //--------------------------------------------------------------------------------------------------- void _main() { cin >> S; N = S.length(); int ans = 0; rep(L, 0, N) rep(R, L, N) { int ok = 1; rep(x, L, R + 1) if (T.find(S[x]) == string::npos) ok = 0; if (ok) chmax(ans, R - L + 1); } cout << ans << endl; }