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