【问题标题】:Creating an array of all substrings of a string [closed]创建字符串的所有子字符串的数组[关闭]
【发布时间】:2013-02-27 14:32:51
【问题描述】:

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

【问题讨论】:

标签: java arraylist


【解决方案1】:

这里有一个简单的解决方案。

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;
    }
}

【讨论】:

    【解决方案2】:

    如果你想使用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 是动态的。

    【讨论】:

    • 请试试这个,如果您还有任何问题,请告诉我。
    【解决方案3】:

    这类似于给定数字“N”生成排列。所以先找到字符串的长度,然后迭代生成子字符串

    类似的东西-

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

    正如其他人建议的那样,尝试解决问题,然后提出您的疑问!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      相关资源
      最近更新 更多