java - 从给定长度生成所有可能的字符串

标签 java algorithm

我希望能够根据给定的长度生成所有可能的字符串,坦率地说,我不知道如何编写代码。所以为了进一步解释,我和一个 friend 想演示一些基本的黑客技术,所以暴力破解就出现了。当然,他会是我的牺牲品,没有违法的事情。

然而,他唯一告诉我的是他的 PW 将是 4 个字符长,但我很确定他的 PW 不会出现在任何字典中,那太容易了。

所以我想到了生成每个可能的 4 字符长字符串的想法,其中包含 a-z 字符(无大写字母)。

有人会指导我们编写这样的算法吗?我真的不关心性能,如果需要 1 晚生成所有 PW,那没问题。

别忘了,这只是为了演示目的。

最佳答案

您可以按照使用数字的方式进行操作。从 aaaa 开始。然后增加“最不重要”的部分,所以 aaab。继续前进,直到到达 aaaz。然后增加到 aaba。重复直到到达 zzzz。

所以你需要做的就是实现

String getNext(String current)

对此进行扩展;这可能不是最快的做事方式,但却是最简单的正确方式。

正如一句古老的格言所说 - “先做对,再做快”。获得一个通过所有测试的有效实现(您确实有测试,对吗?)是您首先要做的。然后您重写它以使其更快,使用您的测试作为保证您不会破坏核心功能。

关于java - 从给定长度生成所有可能的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9175976/

相关文章:

java - 创建一个 ArrayList 的 ArrayList,与另一个 ArrayList 的 ArrayList 相比,该 ArrayList 具有一个附加元素

java - 当从 Runtime.getRuntime().exec() 调用新终端时,线程永远不会结束

algorithm - 如何使用 A* 算法找到最佳的三条路线

algorithm - 如何编写一个返回嵌套表中键列表的函数?

c# - 数独有效性检查算法 - 这段代码是如何工作的?

java - 强制门户在幕后是如何工作的,以及如何用 Java 编写一个门户以在 Windows 热点上使用?

Java:字符串拆分行为很奇怪

java - 如何验证 LinkedList 中创建的对象的某些元素

algorithm - 在并行位片代码中实现快速计数器

arrays - 长度为 K 的 N 个整数的神奇数组 A