ATcoder
2026/7/10 21:31:52 网站建设 项目流程

# 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; }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询