gpt4 book ai didi

java - 在递归中查找Java字符串数组的无序序列

转载 作者:行者123 更新时间:2023-12-01 12:33:03 25 4
gpt4 key购买 nike

我必须创建一个算法,使用字符串数组显示所有可用的固定长度的无序序列。该方法需要是递归的并且只能采用一个整数。它还需要返回一个字符串数组。

假设我有“ab”和“ba”。当我用该方法给出 int 2 时,应该找到以下固定长度的无序序列:

abab
abba
baba
baab

我已经工作了好几个小时了,我感觉我为了这个简单的事情而工作得太辛苦了。我有不同类型的代码,并且它几乎可以工作(abba 显示了两次而不是另一个序列),但我忘记将它返回到数组中,所以导致了问题......我的代码看起来像这样,但尚未完成并且不起作用:

static String[] syllables = {"ab", "ba"};
static String[] syllableWord;

public static void main(String[] args) {
int amountOfSillables = 2;
syllableWord = String[(int)Math.pow(amountOfSillables, amountOfSillables)];
String[] syllableWords = findSequences(amountOfSillables); // I may only use one parameter,
// which is 2 but should work with any number

for (int i = 0; i < syllableWords.length; i++) {
System.out.println(syllableWords[i]);
}
}

public static String[] findSequences(int n) {
if (n == 0) {
return syllableWord;
}
else {
for (int i = 0; i < syllables.length; i++) {
syllableWord += syllables[i]; // Doesn't work because syllableWord is an array.
// When it's a String this would kinda work, but it
// needs to be an array.
findSequences(n - 1);
syllableWord = syllableWord.substring(2); // Also doesn't work when it's an array.
}
}
}

有人可以帮我吗?这让我发疯...

最佳答案

类似这样的事情吗? (使用ArrayList比Array更聪明,因为你不需要管理数组大小,这取决于你的需要)

public static List<String> perm(int n) {
List<String> result = new ArrayList<String>();
if (n == 1) {
return Arrays.asList(syllables);
}
for (String s : syllables) {
for (String prefix : perm(n - 1)) {
result.add(s + prefix);
}
}
return result;
}

关于java - 在递归中查找Java字符串数组的无序序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25789477/

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