【问题标题】:Generate all permutation of a string in recursion in java [duplicate]在java中以递归方式生成字符串的所有排列[重复]
【发布时间】:2016-06-11 00:06:43
【问题描述】:

我想知道如何以递归方式创建给定字符串的所有排列。

假设String a = "abcdefghijklmnopqrstxyz";

我想使用 recursiona 生成一个长度为 5 的字符串(例如),

意思:

  • 啊啊啊
  • aaaab
  • aaaba
  • aaaca
  • zabfg

提前致谢。

【问题讨论】:

  • 好的,你有问题吗?
  • 这是个问题...如何仅使用递归来创建所描述的排列。
  • 连同那个解决方案,只打印出长度为 5 的结果
  • 这个解决方案不是我想要的。我不能在这个任务中使用任何 for 循环。我在这个网站上看到的所有其他解决方案都使用 for 循环。

标签: java string recursion permutation


【解决方案1】:

首先,只需使用 HashMap 左右存储所有唯一字符,然后将它们传输到 List,我们将其称为 chars,以方便使用。

您的递归方法建立在一个字符串之上。当该字符串达到长度 5 时,您就完成了,并且您想保留它。您可以返回字符串或将其存储在全局列表中。

在这种情况下,假设您的列表称为排列。

void generatePermutation(String current) {
    if (current.length == 5) {
        permutations.add(current);
    } else {
        for (int i = 0; i < chars.size(); i++) {
            generatePermutation(current + chars.get(i));
        }
    }
}

【讨论】:

  • 谢谢,但我不允许使用 for 循环,只能使用递归..
  • 我必须生成所有可能的长度为 5 的排列。在我给出的示例中,有 5^26 个排列。
  • 没有for循环是不可能的。
猜你喜欢
  • 2011-11-22
  • 1970-01-01
  • 1970-01-01
  • 2015-02-20
  • 1970-01-01
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-03
相关资源
最近更新 更多