Я должен найти число возможных анаграмм палиндрома для данного слова. Предположим, слово aaabbbb
. Мой подход таков:
Подготовьте хэш-карту, содержащую no. времени появления каждой буквы
Для моего примера это будет
a--->3 b--->4
Если длина строки четная, то нет. количество вхождений каждой буквы должно быть четным, чтобы сформировать палиндром данного слова, иначе ни одна из анаграмм палиндрома не равна 0
Если длина строки нечетная, то максимум одно вхождение буквы может быть нечетным, а другое должно быть четным.
Эти два вышеуказанных шага были предназначены для определения того, может ли данное слово образовывать палиндром или нет.
Теперь, чтобы не найти анаграмм палиндрома, какой подход я должен использовать?
n
a иm
b могут быть упорядочены, когда все a и b считаются эквивалентными, равно(a + b)! / (a! * b!)
, которое расширяется до более чем двух букв:(sum(n_i))! / prod(n_i!)
. Будьте осторожны, чтобы не переполнить факториалы. - person M Oehm   schedule 18.09.2014