Как перемешать массив символов без двух дубликатов рядом друг с другом? [Дубликат]

На этот вопрос уже есть ответ:

Эффективный алгоритм упорядочения объектов разных типов 5 ответов

Мне задали этот вопрос в интервью:

Как перемешать массив символов без двух дубликатов рядом друг с другом?

Алгоритм, который я придумал, был:

естьHashMap символов, количество вхождений пар символов. С помощью этого найдите количество дубликатов против уникальных элементов. Если дубликат> уникален, не может сформировать перетасованный массив без двух дублирующих элементов рядом друг с другом (?)if unique> = duplicate, имеет 2 стека - 1, содержащий уникальные символы, и один, содержащий повторяющиеся символы. Создайте полученный массив таким образом, чтобы сначала извлекать элемент из уникального стека, а затем извлекать элемент из повторяющегося стека. Повторени

Например

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

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

Но я почти уверен, что слишком усложняю логику. Есть ли более простой и надежный способ сделать это?

Ответы на вопрос(4)

Ваш ответ на вопрос