Одним из решений может быть назначение простых чисел буквам алфавита (скажем, это , где первый столбец должен быть символами в алфавите, а другие, очевидно, простыми числами). Поместите их в HashMap<Character, Integer>
. Давайте назовем это PRIME_MAP
. Это должно выглядеть как a -> 2, b -> 3, c -> 5, ...
Вы создаете 2 for
циклов. В каждом из них вы перебираете ThisWord
и ThatWord
соответственно.
Вы создаете произведение из букв слов примерно так:
int thisWordProduct = 1;
for(int i = 0; i < ThisWord.length(); i++) {
thisWordProcuct *= PRIME_MAP.get(thisWordProduct.charAt(i);
}
И аналогично для других.
Если 2 произведения равны, 2 слова являются анаграммами.
Это решение может быть немного более абстрактным, чем предложили другие, но оно должно быть более оптимальным, чем вложенные циклы