Java aplicación LeetCode 481 cadena mágica

481. cadena mágica

S cadena mágica contiene sólo '1' y '2', y las siguientes reglas:

Es la cadena mágica S, porque el personaje serie '1' y '2' van a generar el número de ocurrencias sucesivas de la cadena s en sí.

Antes de varios elementos de la cadena de S de la siguiente manera: S = "1221121221221121122 ..."

Si nos agrupamos en S sucesivas 1 y 2, se convierte en:

22 11 2 1 1 22 1 22 11 2 11 22 ...

Y cada grupo '1' o '2' es el número de ocurrencias de, respectivamente:

1 2 1 2 1 2 1 2 2 1 2 2 ...

Se puede ver el número de ocurrencias de lo anterior es la S en sí.

Dado un número entero N como entrada y devuelve una cadena S número mágico en frente de la N digital de '1'.

Nota: N no será superior a 100.000.

Ejemplo:

Entrada: 6
Salida: 3
Explicación: los seis primeros elementos de cadena mágica S es "12211", que contiene un tres, el flujo vuelve 3.

class Solution {
    public int magicalString(int n) {
        List<Integer> s2=new ArrayList<Integer>();
			 s2.add(1);s2.add(-1);s2.add(-1); 
			 int key=1;
			 for (int i = 2; i < n; i++) {
				if(s2.get(i)==1)
					s2.add(key);
				if(s2.get(i)==-1){
					s2.add(key);
					s2.add(key);
				}
				key=-key;
			}
			  key = 0;
			 for (int i = 0;i<n;i++) {
				if(s2.get(i)==1)
					key++;
			}
			return key;
    }
}
Liberadas 1583 artículos originales · ganado elogios 20000 + · vistas 2,35 millones +

Supongo que te gusta

Origin blog.csdn.net/a1439775520/article/details/104965645
Recomendado
Clasificación