如何创建给定字符串的一个List
或所有子字符串?ArrayList
例如,如果我的输入是“test”,那么我需要一个数组 = {“t”、“e”、“s”、“t”、“te”、“es”、“st”、“tes”、 “est”,“测试”}。
问问题
2850 次
3 回答
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 是动态的。
于 2013-03-12T07:07:44.867 回答
1
这类似于在给定数字“N”的情况下生成排列。所以先找到字符串的长度,然后迭代生成子字符串
像这样的东西-
Algorithm-
for i=0 to string.length
for j=1 to string.length-i
//Generate substrings here
正如其他人所建议的那样,尝试解决问题,然后提出您的疑问!
于 2013-03-12T07:09:17.623 回答
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;
}
}
于 2013-03-12T11:52:08.530 回答