Boa noite!
Pessoal sou novo em java e quero ajuda para modificar a classe Similaridade. É que ela faz o calculo de permutações com inteiro e preciso fazer permutações com string. É que quando faço com inteiro não faz com zero.
public class Similaridade {
public int solucao(int n) {
Map<Integer, Integer> ocorrencias = new HashMap<>();
Integer total = this.separarDigitos(n, ocorrencias);
Integer resultado;
Integer[] valores;
valores = ocorrencias.values().toArray(new Integer[ocorrencias.size()]);
resultado = this.calcularPermutacao(total, valores);
// Desconsidera os zeros no início
if (ocorrencias.containsKey(0)) {
Double quantidadeDeZeros = Double.valueOf(ocorrencias.get(0));
Double quantidadeDeDigitos = Double.valueOf(total);
Double provisorio = Double.valueOf(resultado);
provisorio = provisorio - (provisorio / (quantidadeDeDigitos / quantidadeDeZeros));
resultado = provisorio.intValue();
}
return resultado;
}
public Integer calcularPermutacao(Integer total, Integer… combinacoes) {
Long denominador = 1L;
Long numerador;
Long resultado;
for (Integer combinacao : combinacoes) {
if (combinacao > 1) {
denominador = denominador * this.fatorial(combinacao);
}
}
numerador = this.fatorial(total);
resultado = numerador / denominador;
return resultado.intValue();
}
private Integer separarDigitos(int numero, Map<Integer, Integer> ocorrencias) {
Integer total = 0;
while (numero != 0) {
int digito = numero % 10;
numero = numero / 10;
if (ocorrencias.containsKey(digito)) {
ocorrencias.put(digito, ocorrencias.get(digito) + 1);
} else {
ocorrencias.put(digito, 1);
}
total++;
}
return total;
}
private Long fatorial(Integer numero) {
Long resultado = 1L;
for (int fator = 2; fator <= numero; fator++) {
resultado = resultado * fator;
}
return resultado;
}
}