如何从一个数组列表中创建一个数组列表的数组列表?使用一个函数从数组列表的字符串中创建数组列表



我有一个java程序

  • 读取一个文本文件,
  • 将所有单词放在ArrayList
  • 将所有单词放入ArrayList,小写并去掉标点

我现在想再做两件事。

  • 创建String ArrayList中所有字符串的字谜的函数,
  • 一个数组列表的数组列表,它将每个字谜和原始字符串存储到数组列表中的每个数组列表中。

所以我想开发一个函数,它将一个字符串从一个数组列表插入到一个新的数组列表中,并将所有的字谜放入一个数组列表中,然后将这个数组列表放入正在读取旧数组列表的数组列表中。

看起来像这样:

List<String> arLists = new ArrayList<String>(); //makes new array list
    for(String arList : words) //takes values from old array list
        ArrayList<String> anaLists = new ArrayList<String>(); //makes a new array list
        arLists.add(anag(anaLists,arList,"")); //uses a function that makes an 

我想做一个这样的函数,但是我在这里做的…

public void anag(ArrayList<String> anaLists, String s1, String s2){
    if(s1.length() == 0){
        return anaLists;
    }
    for(int i = 0 ; i < s1.length() ; i++){ //only runs for string length
        String anaList = anag(s1.substring(0, i) + s1.substring(i+1, s1.length()), s1.charAt(i) + s2);
        anaLists.add(anaList);
        }
    }

按照以下步骤从字符串中生成所有字谜:

步骤1:使用字符串的replace删除空白,并确保所有标点符号和大写字母已被删除。

步骤2:编写此函数f(string s, string anagram, ArrayList<String> array),并使用s = yourstring, anagram = "", array = new ArrayList<String>()调用它:

If s is empty, add anagram to array and return
For each letter l in s:
    newanagram = anagram + l
    news = s with l taken out of it (e.g. make a substring of everything before l in s and everything after l in s, and concatenate them together)
    call f(news, anagram, array)

这将探索递归自我调用的"树",并且在"树"的每个"叶子"上,所有字母的每种可能排列将被添加到数组中。当它完成时,n*n-1*n-2*n-3…数组中将有n个阶乘项,这就是为什么你知道你在正确的轨道上:)

如果你需要数组列表中每个字符串的变位,只需在for循环中调用它

经过一番挣扎,我试着理解你的问题,下面是我的答案。如果我说错了请指正。首先,你可以用一个数组列表做所有的预处理工作,比如改变大小写,删除语法。现在来看实际的函数:

public void getAnag(String baseStr, ArrayList<String> finalAnagList)
{
    ArrayList<String> anagList = new ArrayList<String>();
    anagList = getAnagrams(baseStr); // getAnagrams is a support function to get the anagrams
    anagList.add(baseStr); // I suppose you want to add the base string also to the anagrams list
    finalAnagList.add(anagList);
}

程序中的调用函数是:

public void testAnagrams()
{
    ArrayList<String> words = getWordsFromFile("/home/list.txt"); // gets the words from the file
    ArrayList<String> anagramsList = new ArrayList<String>();
    foreach(String word : words)
    {
         getAnag(word, anagramsList);
    }
}

相关内容

  • 没有找到相关文章