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

标签 java arrays string recursion permutation

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

假设我有“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/

相关文章:

java - 在 Google App Engine 中创建实体

java - Apache 和 Tomcat 服务器中的多个站点

java - 将多页 TIFF 图像拆分为单个图像 (Java)

c - c中的int(*pt)[5]是什么意思

java - BufferedReader 不读取整个文本文件

C++ Integer 从 *char[] 中删除字符串

c++ - 在模板中排序链表 - 字符串问题

java - 使用模板调用重载方法

python - Excel 的 SUMIF 函数的 Python 列表或 NumPy 等价物是什么?

ios - NSXMLParser\n 和\t 文本内部