我有一个关于使用循环检查某些事物的可能排列的问题:
使用26槽char数组形成加密句子。这个数组包含一个随机字母表(每个字母只出现一次),并且原始未加密句子的每个字母都被更改为数组在其第x个插槽中的任何字母,x是字母表中的原始字符位置。 / p>
例如,如果加密阵列已经{' q'' w',''''''& #39; 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 []排列呢?
答案 0 :(得分:0)
你需要做的是循环你的字符串的字符,并为每个字符将其更改为所有其他字母。您可以使用具有以下参数的函数:
并返回所有组合。
然后,您可以递归地为单词(早晨)中的每个字母调用它,并返回所有可能单词的列表。当递归地调用自身并且'child'函数返回时,父函数循环遍历所有答案,并且对于它们中的每一个都为其自己的字母添加前缀。它必须为所有已经拍摄的字母的字母执行此操作(递归调用和前缀字母)。
预计这会花费很多时间。