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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bamboo_Day

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值