Gem cadena (prefijo y determina si el intervalo máximo)

título Descripción

Hay una cadenas de gemas ensartadas por el rubí y esmeralda, sólo cuando el mismo número de rubí y la esmeralda, cuando sólo la cadena más estable joya, son propensos a romperse. Ann se preguntó piedra preciosa de una cadena dada, la interceptación más larga posible de una cadena joya estable, el número de composición joyas. Por favor ayudarlo.

Emerald con 'G' representan, rubí está representado por 'R'.

Formato de entrada

Su cadena que consiste en G y R

Formato de salida

La cadena más larga de las gemas número estable de las joyas que consisten en

entrada y salida de la muestra

Entrada # 1 copia

GRGGRG

Salida # 1 copia

4

Descripción / Consejos

RGGR para responder.

número joyería <= 1000000

 

ideas:

Verde indica como +1, -1 conoce como rojo, entonces el prefijo y el cálculo es, un objeto de cumplir con los requisitos de la sección y cero, es decir, el prefijo de los dos puntos extremos del intervalo y la diferencia es igual a cero (un valor igual al punto final)

Por lo tanto para cada valor de un prefijo y se trató como sigue:

Cuando aparece por primera vez, se registra, o calcular el tamaño de intervalo y el valor de su aparición por primera vez, y tratar de actualizar el intervalo máximo

#include<iostream>
#include<cstring>
#include<map>
#include<algorithm>
using namespace std;
int main() {
	char str[1000002];
	int sum=0,ans=0;
	map<int,int> m;m[0]=0;  //前缀和的初始为0 
	cin>>(str+1);  //字符串从1开始写入 
	for(int i=1; i<=strlen(str+1); i++) {
        if(str[i]=='G')sum+=1;
        else sum-=1;
        if(m.find(sum)==m.end())m[sum]=i;  //若sum的值为首次出现,则记录该值 
		else ans=max(ans,i-m[sum]);   //尝试更新最大区间 
	}cout<<ans<<endl;
	return 0;
}

 

Publicado 42 artículos originales · alabanza ganado 16 · vistas 3408

Supongo que te gusta

Origin blog.csdn.net/qq_41542638/article/details/97622042
Recomendado
Clasificación