1536. 【中山市第十一届信息学邀请赛决赛】同质(same)
作者主页https://blog.csdn.net/2401_89382924?type=blog
题目描述
给定一个仅由小写字母组成的字符串 s,求 s 中最长的子串的长度,满足子串中所有字母均相等。
输入
一行一个字符串 s。
输出
一行一个整数,表示答案。
样例输入
aabaaaccdd
样例输出
3
数据范围限制
对于 20% 的数据,s
的长度小于等于 20
。
对于另外 20% 的数据,s
只包含一种字母。
对于 100% 的数据,s
的长度小于等于 10^5
,仅包含小写字母。
提示
aabaaacc 中满足所有字母相等的子串有 a, aa, aaa, b, c, cc, d, dd,其中最长的是 aaa,所以答案为 3。
OK: 现在我们看看思路
首先每次录入1个字符,保存这个字符
char c, last;last = c = getchar(); // 第一个字符while ((c = getchar()) != EOF){// 代码处理}
接着处理数据
if (last == c) cnt ++;
else ans = max(ans, cnt), cnt = 1;
last = c;
CODE
#include <stdio.h>
#define max(a, b) (a) > (b) ? (a) : (b)int ans, cnt = 1;
int main()
{char c, last;last = c = getchar(); // 第一个字符while ((c = getchar()) != EOF){if (last == c) cnt ++;else ans = max(ans, cnt), cnt = 1;last = c;}printf("%d", max(ans, cnt));return 0;
}