Como embaralhar uma matriz de caracteres sem duas duplicatas próximas uma da outra? [duplicado

Esta pergunta já tem uma resposta aqui:

lgoritmo eficiente para encomendar diferentes tipos de objet 5 respostas

Fiz essa pergunta em uma entrevista:

Como embaralhar uma matriz de caracteres sem duas duplicatas próximas uma da outr

O algoritmo que criei foi:

tenha umHashMap de caractere, contagem de ocorrência de pares de caracteres. Com isso, encontre a contagem de elementos duplicados e únicos.Se duplicado> exclusivo, não é possível formar uma matriz aleatória sem 2 elementos duplicados próximos um do outro (?)se exclusivo> = duplicado, possui 2 pilhas - 1 contendo caracteres únicos e uma contendo caracteres duplicados. Construa a matriz resultante de maneira a destacar um elemento da pilha exclusiva primeiro e a seguir um elemento da pilha duplicada. Repeti

Por exemplo

[a,b,b,c] shuffled array with above algorithm - [a,b,c,b];

[b,b,b,c] unique < duplicate return error

Mas tenho certeza de que estou complicando demais a lógica. Existe uma maneira mais fácil e fácil de fazer isso?

questionAnswers(4)

yourAnswerToTheQuestion