gpt4 book ai didi

java - 任何长度的重复排列

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:46:41 25 4
gpt4 key购买 nike

我试图找到给定字符串任意长度的排列。这包括重复

例如:

str = "java";

At length 1

j, a, v, a

At length 3

4!/(4-3)! = 24

jav, jaa, jva, jva, jaa, jav,
ajv, aja, avj, ava, aaj, aav,
vja, vja, vaj, vaa, vaj, vaa,
aja, ajv, aaj, aav, avj, ava

我正在考虑使用 for 循环 遍历字符串的每个字符并执行必要的计算以生成字符串其余部分的排列

例如:

start with "j"
av, aa | va, va | aa, av

then with the first "a"
jv, ja | vj, va | aj, av

这是我目前所拥有的,我仍在弄清楚解决这个问题背后的逻辑:

public static class Pair<Character, Boolean> {
Character letter;
Boolean used;
Pair(Character c, Boolean seen) {
this.used = seen;
this.letter = c;
}
}

public static void permutationOfString(String str, int len) {
List<Pair> charCheck = new ArrayList<Pair>();
for (int i = 0; i < str.length(); i++) {
charCheck.add(new Pair(str.charAt(i), false));
}

for (char c : str.toCharArray()) {

}
}

我不确定如何写这个。我想输出字符串的所有可能排列。

如果有人有另一种方法来解决这个问题或者可以更有效地解决这个问题,我愿意接受建议!谢谢!

最佳答案

给每一个附加一些东西,使它们独一无二。
运行非重复的常规算法。
在输出结果之前去除附加的文本。

关于java - 任何长度的重复排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21586083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com