Ola pessoal,
estou fazendo um programa que utiliza forca bruta para resolucao do problema. Pra isso, eu preciso gerar todas as palavras possiveis com as letras ‘a’ e ‘b’ ate um determinado tamanho n.
Mas meu programa esta dando um erro quando esse n eh grande.
Existe algum limite do tamanho de caracters de um String? Eu posso controlar isso??
Meu codigo é:
// Metodo que gera todas as palavras possiveis do alfabeto {a, b} de tamanho menor igual a n.
public ArrayList<String> geraPalavras(int tamanho){
ArrayList<String> lista = new ArrayList<String>();
ArrayList<String> listaAux = new ArrayList<String>();
if (tamanho > 0){
lista = this.geraPalavras(tamanho - 1);
if (lista.size() == 0){
lista.add("a");
lista.add("b");
} else {
for (String e: lista){
if (e.length() == tamanho - 1){
listaAux.add(e.concat("a"));
listaAux.add(e.concat("b"));
}
}
for (String e: listaAux){
lista.add(e);
}
}
return lista;
} else
return lista;
}
E o erro foi o seguinte:
Exception in thread “main” java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.util.Arrays.copyOf(Unknown Source)
at java.util.ArrayList.ensureCapacity(Unknown Source)
at java.util.ArrayList.add(Unknown Source)
at Automato.geraPalavras(Automato.java:44)
at Automato.geraPalavras(Automato.java:37)
at Automato.geraPalavras(Automato.java:37)
at Automato.geraPalavras(Automato.java:37)
at Main.main(Main.java:56)
Se alguem souber me responder, agradeço.
Bjs
