Repetitions

今天运气不错,cses网站进得去,那今天就讲一讲cses的题目吧(第四堂体育课求雨失败 我来电脑老师这逃课了 傻逼的体育老师想累死我们)

先上题目!

  • time limit: 1.00 s
  • Memory limit: 512 MB

You are given a DNA sequence: a string consisting of characters A, C, G, and T. Your task is to find the longest repetition in the sequence. This is a maximum-length substring containing only one type of character.

Input

The only input line contains a string of nn characters.

Output

Print one integer: the length of the longest repetition.

Constraints

  • 1≤n≤10^6

Example

Input:
ATTCGGGA

Output:
3

题目翻译

时间限制:1.00 s

内存限制:512mb
你有一个DNA序列:一个由字符A, C, G和t组成的字符串。你的任务是找出序列中最长的重复。这是只包含一种字符类型的最大长度子字符串。

输入

唯一的输入行包含一个n个字符的字符串。

输出

打印一个整数:最长重复的长度。

约束
1≤n≤106
例子

输入:
ATTCGGGA

输出:
3.

有道比百度翻译好用多了

思路

这道题应该是属于字符串处理这一类的,但这道不使用字符串读入,用字符数组读入,如果读入的和上一个字符一样,就sum++;如果不一样,就判断是否为最长,然后sum = 1

本蒟蒻语文不好,无法很好的组织语言描述思路,看不懂的看代码吧

这里有一个细节,就是我们不知道字符串的长度,所以我们用while(cin >> a)来判断。这可能在window环境下不好调试,竹子记得好像有一个快捷键可以手动停止输入的来着,但是竹子

忘了

上代码!

#include <bits/stdc++.h>//ÍòÄÜÍ· 
using namespace std;
int sum = 1, ma = -1;//Êý×鶨ÒåµÄλÖÃûÓÐʲôҪÇ󣬰´¸öÈËϲºÃÀ´ 
int main(){
	char a, b;
	
	while(cin >> a){
		if(a == b){
			sum++;
		}else{
			ma = max(sum, ma);
			cout << ma << endl;
			sum = 1;
			b = a;
		}
	}
	cout << ma << endl;
	return 0;
}

注释我打的时候是中文的,不知道为什么会变成这样……

上一篇:JOI 系列乱做


下一篇:1380 D - Berserk And Fireball(思维,贪心)