其他分享
首页 > 其他分享> > Repetitions

Repetitions

作者:互联网

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

先上题目!

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

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

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

标签:字符,ma,sum,Repetitions,读入,字符串,输入
来源: https://blog.csdn.net/weixin_43617116/article/details/120779333