如何创建给定字符串的所有子字符串的List
或ArrayList
?
例如,如果我的输入是“test”,那么我需要一个数组= {“t”,“e”,“s”,“t”,“te”,“es”,“st”,“tes”, “est”,“test”}。
答案 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;
}
}