首先请注意我对Java了解。我已经进行了暴力申请,我知道密码中有两个数字可以破解。
当我生成一个像ABC这样的字符串时,我需要在这个字符串的所有可能位置放两个数字(我已经完成了!)
我需要两个从0到9生成的数字。这包括两个数字放在一起时从00到99的可能性。
我已经考虑了很多这个并且相信最好让一个整数增加,然后我可以分成两个整数来反馈给我的主,但实际上我不能从00开始一个整数,01,02,03 ..第一个pontion将是fNum和第二个sNum。它将是1,2,3,4到10。
到目前为止,我已经提出了以下解决方案,但它并不是很有效,因为我也想要它。
public int twoNumber(int fNum, int sNum){
//form array from two integers
int[] intArray = {fNum, sNum};
//increment the array value (not sure if correct way?)
intArray++;
//split the array to get two indiivudla numbers
int[] part1 = new int[99];
int[] part2 = new int[99];
System.arraycopy(intArray, 0, part1, 0, part1.length);
System.arraycopy(intArray, part1.length, part2, 0, part2.length);
//I need to convert the two above and return the two numbers as integers
//and not arrays
}
我不是100%确定这是最好的方法,但程序应该返回如下内容:
假设我们在brtue力量中以A开头。
0A0
0A1
0A3
..
0A9
1A0
..
9A9
..
0AB0
0AB1
0AB2
0AB3
等等。
我的问题是,是形成数组,递增,分裂和返回这个问题的最佳方法吗?我还想过其他方法,比如创建一个包含所有可能数字的数组(花费太长时间),在java中使用random,创建一个整数,递增,拆分和返回。
答案 0 :(得分:2)
这听起来像"家庭作业"或者"项目",所以这里的建议将是关于你将使用的算法和一些把事情放在一起的方法,而不是一个工作程序来做到这一点。
首先,算法。看起来您需要从基本字符串生成试用密码,其中包含所有可能的位置组合中的两个整数。因此,您需要一种循环遍历"添加整数"的所有可能组合的算法。字符串中的位置...并且对于每个组合,运行整数值的100个组合。
在伪代码中,假设您有位置loca
和locb
,您可能会执行以下操作:
for num1=0 to 9
for num2=0 to 9
form candidate password by inserting num1 in loca and num2 in locb
end for
end for
您可能希望通过将三个字符串放在前面(字符最多为loca -1
),中间(字符从loca
到locb
)和后面(字符来自{{1})来简化}结束)并替换为
candidate = front + num1 + middle + num2 + back