我得到了这两个";字母表":
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ʙ, ᴀʙ
(注意从每个"字母表"中提取的字符的差异(。
单词将保持不变,这样字母就不会被重新排列,这只是为了找到该单词的这些类型的字母之间的每一个可能的组合。此外,使用toUpperCase之类的方法也不起作用,因为我需要使用secondArray中的这些特殊字符。
我需要什么样的循环才能找到解决方案?
编辑:答案不对
你可能可以使用双循环,比如:
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)]));
}