java - 如何在 Java 中将字符组合成一个单词?

标签 java string algorithm

我需要长度为 n 的各种单词,并且在每个位置/索引处可以有 m 个不同的元素。

例如 n = 5

允许的第一个位置元素是:H,Y,U,B,N

对于第二个位置允许的元素是:E,S,D

对于第三个位置允许的元素是:L,O,P

对于第四个位置允许的元素是:L,O,P

对于第五个位置允许的元素是:O,K,L

所以可以组成的各种词有:HELLO、YELLK、BDPOK等

在 Java 中以一种有效的方式找出所有可能的单词的有效方法是什么?

最佳答案

我认为递归地从每个字符串中选择每个字符,然后移动到下一个字符串是最简单的方法,我实现了 java 代码,我添加了一些注释,如果有任何不清楚的地方,请不要犹豫。

    static String s[] = {"HYUBN", "ESD", "LOP", "LOP", "OKL"};
    static ArrayList<String> comb; // arraylist is going to hold results.

    static void dfs(String x,int i) {
        if(i == s.length) {   // there is no more string that can be generated
            comb.add(x); // save the found string
            return;
        }
        for(int j=0;j<s[i].length();j++)  // for each character in the current string
            dfs(x+s[i].charAt(j),i+1); // take the current character and move to the next string
    }

    public static void main(String[] args) {
        comb = new ArrayList<>();
        dfs("",0);
        for(String x:comb) out.print(x + " ");
    }

关于java - 如何在 Java 中将字符组合成一个单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42256569/

相关文章:

c++ - 给定一个三角形和一个线段,找到可以创建相似三角形的第三个点

iOS-选择整数数组中第二小的数字

java - 请纠正我这一点,这很令人困惑

java - 如何在android中使用itext生成pdf

c++ - 为什么 C++ 允许将整数分配给字符串?

c - 如何从字符串中分离整数并在 C 中操作它们?

java - Android - 显示没有标题栏或有菜单按钮的菜单

java - 从 BoxLayout 中移除时组件不会移动

javascript - 使用占位符和替换对象格式化 JavaScript 字符串?

在流网络中处理时间的算法和数据结构