循环在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 楼答案
您需要做的是循环遍历字符串的字符,并为每个字符将其更改为所有其他字母。您可以使用以下参数的函数:
并返回所有组合
然后可以对单词中的每个字母递归调用它(morning),它返回所有可能单词的列表。当递归地调用自身,“child”函数返回时,父函数循环遍历所有答案,并为每个答案加上自己的字母前缀。它必须这样做(递归调用和前缀字母)为所有字母,包括已经采取的字母
预计这需要很多时间