Найдите все возможные комбинации букв из двух «алфавитов» для любого заданного слова

#java #math #logic

Вопрос:

У меня есть эти два массива «алфавитов»:

 private static final char[] regularAlphabet = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
private static final char[] secondAlphabet = {'ᴀ', 'ʙ', 'ᴄ', 'ᴅ', 'ᴇ', 'ꜰ', 'ɢ', 'ʜ', 'ɪ', 'ᴊ', 'ᴋ', 'ʟ', 'ᴍ', 'ɴ', 'ᴏ', 'ᴘ', 'q', 'ʀ', 'ꜱ', 'ᴛ', 'ᴜ', 'ᴠ', 'ᴡ', 'x', 'ʏ', 'ᴢ' };
 

secondAlphabet использует специальные символы, поэтому они читаются иначе, чем обычные.

Что я намерен сделать, так это напечатать все возможные комбинации, которые можно было бы сделать для данной строки. Например, учитывая строку «ab», мы можем получить: ab, ᴀb, aʙ, ᴀʙ (обратите внимание на разницу в символах, извлеченных из каждого «алфавита»).

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

Какой цикл мне понадобится, чтобы найти решение?

Ответ №1:

Правка: Неправильный ответ

Возможно, вы сможете использовать двойной цикл, например:

 for (char ch1 : regularAlphabet) {
    for (char ch2 : secondAlphabet) {
        System.out.println(String.valueOf(ch1)   String.valueOf(ch2));
    }
}
 

Или еще лучше, оптимизированный для цикла (менее читаемый)

 for (int i = 0; i < regularAlphabet.length * secondAlphabet.length; i  ) {
    System.out.println(String.valueOf(regularAlphabet[i % regularAlphabet.length])   String.valueOf(secondAlphabet[(int) (i / regularAlphabet.length)]));
}
 

Комментарии:

1. Я хочу иметь возможность ввести любое слово и получить для него все возможные комбинации букв из обоих алфавитов, а не просто получить все 2 комбинации букв

2. о, извините, я неправильно понял.