有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

循环在java中实现双射加密

我有一个关于使用循环检查某事物的可能排列的问题:

使用一个26槽字符数组形成一个加密句子。此数组包含一个随机字母表(每个字母只出现一次),原始未加密句子的每个字母都被更改为数组第x个插槽中的任何字母,x是字母表中的原始字符位置

例如,如果加密数组是{'q'、'w'、'e'、'r'、't'、…、'm'},那么消息“abez”将变成“qwtm”,因为:

a is the 1st letter of the alphabet and the 1st slot of the array contained a 'q'
b is the 2nd letter of the alphabet and the 2nd slot of the array contained a 'w'
e is the 5th letter of the alphabet and the 5th slot of the array contained a 't'
...

我想通过检查关键字“morning”的每个排列来强制加密句子

如何正确地执行此操作?我已经编写了一个方法来检查一个char[]是否包含在另一个char[]中,但是如何循环处理char[]排列


共 (1) 个答案

  1. # 1 楼答案

    您需要做的是循环遍历字符串的字符,并为每个字符将其更改为所有其他字母。您可以使用以下参数的函数:

    1. 要转换的字符串
    2. 字母表中的字母已经记下来了

    并返回所有组合

    然后可以对单词中的每个字母递归调用它(morning),它返回所有可能单词的列表。当递归地调用自身,“child”函数返回时,父函数循环遍历所有答案,并为每个答案加上自己的字母前缀。它必须这样做(递归调用和前缀字母)为所有字母,包括已经采取的字母

    预计这需要很多时间