# AT_abc122_b [ABC122B] ATCoder
## 题目描述
给定一个由大写英文字母组成的字符串 $S$。请你求出 $S$ 的子串(见下方注释)中最长的 *ACGT 字符串* 的长度。
这里,ACGT 字符串指的是只包含 `A`、`C`、`G`、`T` 这四种字符的字符串。
## 输入格式
输入从标准输入中以以下格式给出:
> $S$
## 输出格式
输出 $S$ 的子串中最长的 ACGT 字符串的长度。
## 输入输出样例 #1
### 输入 #1
ATCODER
### 输出 #1
3
## 输入输出样例 #2
### 输入 #2
HATAGAYA
### 输出 #2
5
## 输入输出样例 #3
### 输入 #3
SHINJUKU
### 输出 #3
0
## 说明/提示
## 注释
字符串 $T$ 的子串是指从 $T$ 的开头和结尾各去掉 $0$ 个或多个字符后得到的字符串。
例如,`ATCODER` 的子串包括 `TCO`、`AT`、`CODER`、`ATCODER`、``(空字符串),但不包括 `AC`。
## 约束
- $S$ 的长度为 $1$ 到 $10$。
- $S$ 的每个字符都是大写英文字母。
## 样例解释 1
`ATCODER` 的子串中,最长的 ACGT 字符串是 `ATC`。
## 样例解释 2
`HATAGAYA` 的子串中,最长的 ACGT 字符串是 `ATAGA`。
## 样例解释 3
`SHINJUKU` 的子串中,最长的 ACGT 字符串是 ``(空字符串)。
题解:统计字符串中的每个字符,如果是ACGT中的一个 计数count++,否则计数清零。
最后求一个最大的比较一下即可。
#include <iostream> #include <string> using namespace std; int main() { string S; cin >> S; int max_length = 0; int current_length = 0; for (char ch : S) { if (ch == 'A' || ch == 'C' || ch == 'G' || ch == 'T') { current_length++; if (current_length > max_length) { max_length = current_length; } } else { current_length = 0; } } cout << max_length << endl; return 0; }