创建字符串的所有子字符串的数组

时间:2013-03-12 06:55:49

标签: java arraylist

如何创建给定字符串的所有子字符串的ListArrayList? 例如,如果我的输入是“test”,那么我需要一个数组= {“t”,“e”,“s”,“t”,“te”,“es”,“st”,“tes”, “est”,“test”}。

3 个答案:

答案 0 :(得分:1)

如果您想使用ArrayList,则可以尝试使用此代码,因为它是动态的:

    String input = "test";
    String temp;
    List<String> list = new ArrayList<String>();
    for(int i=0;i<input.length();i++){
        for(int j=1;j<=(input.length()-i);j++){
            temp = input.substring(i,i+j);
            list.add(temp);

        }
    }
    for (String string : list) {
        System.out.println(string);
    }

如果您仍想使用String数组,可以这样做:

String input = "test";
        String temp;
        String[] list = new String[10];
        int k=0;
        for(int i=0;i<input.length();i++){
            for(int j=1;j<=(input.length()-i);j++){
                temp = input.substring(i,i+j);
                list[k++]=temp;

            }
        }
        for (String string : list) {
            System.out.println(string);
        }

注意:最好使用ArrayList而不是数组,因为ArrayList是动态的。

答案 1 :(得分:1)

这类似于在给定数字“N”的情况下生成排列。因此,首先找到字符串的长度并迭代并生成子字符串

像这样 -

Algorithm-
for i=0 to string.length
   for j=1 to string.length-i
       //Generate substrings here

正如其他人建议做出一些尝试来解决问题,然后提出疑问!

答案 2 :(得分:0)

这是一个解决您问题的简单方法。

import java.util.ArrayList;

public class Substrings {
    public static void main(String []args) {
        ArrayList<String> substrings = Substrings.generateSubstrings("test");
        for(String s : substrings)
            System.out.println(s);

    }

    public static ArrayList<String> generateSubstrings(String str) {
        //The total number of substrings of given string
        int substringsCount = str.length() * (str.length() + 1) / 2;

        ArrayList<String> substrings = new ArrayList<String>(substringsCount);

        //generating all the substrings.
        for(int i = 0;i < str.length();i++)
            for(int j = i+1;j <= str.length();j++)
                substrings.add(str.substring(i,j));

        return substrings;
    }
}