Если вы не заинтересованы в палиндроме или анаграмме, являющемся реальным словом, я думаю, что вы можете пересмотреть проблему как проверить, имеет ли данная строка не более одного символа, который появляется неравномерным количеством раз. Это основано на том, что только средний символ может встречаться нечетным числом раз. Пока это выполняется, вы можете сформировать палиндром из строки.
Для этого вы можете использовать Linq. Возможно, что-то вроде этого:
private static bool IsPalindromeAnagram(string test)
{
var charCount = test.GroupBy(c => c, (c, i) => new
{
character = c,
count = i.Count()
});
return charCount.Count(c => c.count % 2 == 1) <= 1;
}
Не могли бы вы привести несколько примеров того, что вы имеете в виду? Например, «abcabc» действителен, поскольку это анаграмма «abccba», хотя ни одна из них не является реальными словами? –
i.e. «Naa» - это анаграмма палиндрома «ana» –
Зачем нужно получать HashCode для каждого символа, а не использовать сам символ? – Saggio