当前位置: 首页 > 知识库问答 >
问题:

如何创建字符串的所有元音组合并将每个组合添加到ArrayList

卫俊力
2023-03-14

我很难打印出给定输入的所有元音组合。我的输入是“SOMETHING”,我想打印所有元音组合,如sxmxthxng,其中x是aeiou元音。我认为我的问题是我找到了一个元音,用其他所有元音来改变它,然后继续。我需要继续往下看单词的其余部分,找到更多的元音,并在继续之前改变这些元音。

其他参考文献

vowelList is an ArrayList containing all lower case vowels.

密码

 private static void createVowelCombos(String word) {
    Set<String> rmRepeats = new HashSet<>();
    StringBuilder sbAddWord = new StringBuilder(word);
    String[] splitWord = word.split("");

    for (int i = 0; i < word.length(); i++) {
       // System.out.println("real word: " + splitWord[i]);

        if (splitWord[i].matches(".*[aeiou]")) {
           // System.out.println("Split: " + splitWord[i]);
            for (int j = 0; j < 5; j++) {
                sbAddWord.setCharAt(i, vowelList.get(j).charAt(0));
                System.out.println(sbAddWord.toString());
            }
        }
    }
}

输入“某物”的示例输出

samething
semething
simething
something
sumething
sumathing
sumething
sumithing
sumothing
sumuthing
sumuthang
sumutheng
sumuthing
sumuthong
sumuthung

出于某种原因,它给了我所有与“u”的组合,而不是其他元音。我也想得到其他元音的所有结果。

共有1个答案

上官培
2023-03-14

正如已经建议的那样,您的问题可以通过使用递归(回溯)来最好地解决。我已经修改了您的代码以打印所需的输出。看看!!

private static void createVowelCombos(String word, int start) {
    StringBuilder sbAddWord = new StringBuilder(word);
    String[] splitWord = word.split("");
    if(start==splitWord.length)
    {
        System.out.println(word);
        return;
    }
    if (splitWord[start].matches(".*[aeiou]")) {
           // System.out.println("Split: " + splitWord[i]);
            for (int j = 0; j < 5; j++) {
                sbAddWord.setCharAt(start, vowelList.get(j).charAt(0));
                createVowelCombos(sbAddWord.toString(),start+1);
                //System.out.println(sbAddWord.toString());
            }
    }
    else
        createVowelCombos(sbAddWord.toString(),start+1);

}

从调用方法调用 createVowelCombos(“something”,0)。

 类似资料:
  • 我有一个字符串“ECET”,我想创建所有可能的字符串,其中我用“X”替换一个或多个字母(除第一个外)。 在这种情况下,我的结果是: 关于如何处理这个问题有什么想法吗? 这不仅仅是创建“X”的可能组合/排列,还包括如何将它们与现有字符串组合。

  • 问题内容: 我试图将字符串数组作为参数传递给Wetland类的构造函数;我不明白如何将字符串数组的元素添加到字符串数组列表。 问题答案: 您已经具有内置方法:- 注 : -您应该使用没有。 返回一个不同的-> ,不能将其类型转换为。 然后,您将不得不使用方法,这不是很好。所以就用 注意 :-返回的列表是固定大小的列表。如果要向列表中添加某些内容,则需要创建另一个列表,并用于向其中添加元素。所以,那

  • 我正处于复杂的聚合查询(具有查找和许多组/展开阶段)的中间,并且遇到来自不同字段的两个不同数组的合并问题。 至于现在,在其中一个阶段之后(在我的大查询的中间或查找之后),我有以下输出: 我想: 因此,每个值,我想根据它的索引添加到内的每个对象,比如第一个内的应该有第一个来自 具有数组索引的架构): 问题是: 我无法在聚合之后或之前执行此操作,因为: > 我没有必要的数据,因为它是从不同集合中查找的

  • 问题内容: 示例 :说-> Spubeak,更多信息在这里 不要给我一个解决方案,而是指向正确的方向或告诉我可以使用哪个python库?我正在考虑使用正则表达式,因为我必须找到一个元音,但是我可以使用哪种方法在元音前面插入“ ub”呢? 问题答案: 比一个简单的正则表达式更复杂,例如, 简单的正则表达式将无法捕获未在中发音的正则表达式。 您需要一个提供发音词典的库,例如: 例: 输出量 注意:它与

  • 问题内容: 如何将所有数组项合并为一个字符串? 问题答案: 使用功能。 例如:

  • 问题内容: 我是Java新手,所以我几乎不需要帮助 我有 我想向此数组(脚本)添加新的字符串(string1,string2)作为示例 我想在以后的阶段中不添加新字符串 我该怎么办? 问题答案: 您无法在Java中调整数组的大小。 声明数组的大小后,它将保持固定。 相反,您可以使用具有动态大小的对象,这意味着您无需担心其大小。如果数组列表的大小不足以容纳新值,则它将自动调整大小。