Tenho que resolver o seguinte problema:
João está trabalhando em uma mina, tentando retirar o máximo que consegue de diamantes “<>”. Ele deve excluir todas as particulas de areia “.” do processo e a cada retirada de diamante, novos diamantes poderão se formar. Se ele tem como uma entrada .<…<<…>>…>…>>>., três diamantes são formados. O primeiro é retirado de <…>, resultando .<…<>…>…>>>. Em seguida o segundo diamante é retirado, restando .<…>…>>>. O terceiro diamante é então retirado, restando no final …>>>., sem possibilidade de extração de novo diamante.
Criei então o seguinte código:
package exerc.aleatorios;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class DiamantesEAreia {
public static void main(String[] args) {
try (Scanner teclado = new Scanner(System.in)) {
int n = teclado.nextInt();
teclado.nextLine();
List<List<Character>> entradas = new ArrayList<List<Character>>();
int i = 1;
while(i<=n) {
List<Character> mina = new ArrayList<Character>();
String frase = teclado.nextLine();
boolean verifica = false;
for(char letra : frase.toCharArray()) {
if (letra != '<' || letra != '>' || letra != '.' ) {
verifica = true;
}
}
if(verifica) { frase= teclado.nextLine();}
while(frase.length()>1000) {
frase = teclado.nextLine();
}
for(char letra : frase.toCharArray()) {
if(letra != '.') {
mina.add(letra);
}
}
entradas.add(mina);
i++;
}
List<Integer> saida = new ArrayList<Integer>();
for(List<Character> caso : entradas) {
int contagem = 0;
boolean verifica = false;
while(!verifica) {
for(int j = 0;j< (caso.size()-1);j++) {
if(caso.get(j) == '<' && caso.get(j+1) == '>') {
contagem++;
caso.remove(j+1);
caso.remove(j);
break;
}else {
verifica = true;
}
}
if (caso.size() == 2 && (caso.get(0) == '<' && caso.get(1) == '>') ) {
contagem++;
}
}
saida.add(contagem);
}
for(Integer valorFinal : saida) {
System.out.println(valorFinal);
}
}
}
}
Testei e algumas vezes da certo, outras não, alguém pode me ajudar? Não sei o que fiz errado.