Нахождение всех уникальных перестановок строки без генерации дубликатов

Найти все перестановки строки можно с помощью хорошо известного алгоритма Штейнхауса-Джонсона-Троттера. Но если строка содержит повторяющиеся символы, такие как
AABB,
, то возможных уникальных комбинаций будет 4!/(2! * 2!) = 6

Один из способов достижения этого состоит в том, что мы можем хранить ее в массиве или около того, а затем удалять дубликаты.

Есть ли более простой способ модифицировать алгоритм Джонсона, чтобы никогда не генерировать дубликаты перестановок. (Наиболее эффективным способом)

21
задан mok 16 March 2014 в 01:18
поделиться