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