pok Asked:2022-07-30 18:13:09 +0000 UTC2022-07-30 18:13:09 +0000 UTC 2022-07-30 18:13:09 +0000 UTC 将所有俄语字符更改为英语,反之亦然[关闭] 772 问题是如何用一个词把俄文和英文中所有相似的字母排序出来,比如有java这个词,可以写成j a va和dzhav a和dzh a in a(粗斜体字母来自拉丁字母),如何让它自己做?试图做某事但替换所有字符 java замена 1 个回答 Voted Best Answer Vadik 2022-07-31T04:33:27Z2022-07-31T04:33:27Z 我们从必要的替换中创建一个 HashMap: Map<Character, Character> substitutions = new HashMap<>(); substitutions.put('а', 'A'); substitutions.put('е', 'E'); substitutions.put('р', 'P'); count我们计算原始字符串中需要替换的字母数量input: String input = "привет"; int count = 0; for (char character : input.toCharArray()) { if (substitutions.containsKey(character)) { count += 1; } } binaryStrings我们以二进制表示生成所有可能组合的列表。一路上,我们用缺失的零来补充这些行: List<String> binaryStrings = new ArrayList<>(); long pow = (long) Math.pow(2, count); for (long i = 0; i < pow; i++) { String binaryString = Long.toBinaryString(i); char[] leadingZeros = new char[count - binaryString.length()]; Arrays.fill(leadingZeros, '0'); binaryStrings.add(String.valueOf(leadingZeros) + binaryString); } // binaryStrings на выходе будет списком из строк: // ["00", "01", "10", "11"] 最后,我们进行必要的替换,为列表的每个元素分配一个binaryStrings新字符串。中的符号对应'0'于binaryString不需要进行替换的事实,符号'1'表示您需要按照以下方式对符号进行替换substitutions: List<String> outputList = new ArrayList<>(); for (String binaryString : binaryStrings) { char[] binaryCharArray = binaryString.toCharArray(); StringBuilder output = new StringBuilder(); int index = 0; for (char character : input.toCharArray()) { if (substitutions.containsKey(character)) { if (binaryCharArray[index] == '0') { output.append(character); } else { output.append(substitutions.get(character)); } index++; } else { output.append(character); } } outputList.add(output.toString()); } // outputList на выходе будет содержать все возможные комбинации замен: // ["привет", "привEт", "пPивет", "пPивEт"]
我们从必要的替换中创建一个 HashMap:
count我们计算原始字符串中需要替换的字母数量input:binaryStrings我们以二进制表示生成所有可能组合的列表。一路上,我们用缺失的零来补充这些行:最后,我们进行必要的替换,为列表的每个元素分配一个
binaryStrings新字符串。中的符号对应'0'于binaryString不需要进行替换的事实,符号'1'表示您需要按照以下方式对符号进行替换substitutions: