我想知道是否存在库函数(或者为什么Apache Commons中的StringUtils没有它?),对于String,计算所有子字符串。 对于“abcde”,它返回“a”,“ab”,“b”,“abc”,“bc”,“c”,“abcd”,“bcd”,“cd”,“d”,“abcde”, “bcde”,“cde”,“de”,“e”。
答案 0 :(得分:3)
我不相信有一个库函数,但是自己滚动它会非常容易:
public ArrayList<String> getAllSubstrings(String s)
{
ArrayList<String> toReturn = new ArrayList<String>();
for (int i = 0; i < s.length(); i++)
for (int j = i + 1; j < s.length(); j++)
toReturn.add(s.substring(i, j));
}
请记住,会有多个排列等于1 + 2 + 3 + 4 + ... + s.length
答案 1 :(得分:1)
我不认为AndyPerfect会正常工作。第二个循环绑定需要&lt; =而不仅仅是&lt;。
public static ArrayList<String> getPowerSet(String original) {
ArrayList<String> toReturn = new ArrayList<String>();
toReturn.add("");
for (int i = 0; i < original.length(); i++) {
for (int j = i + 1; j <= original.length(); j++) {
toReturn.add(original.substring(i, j));
}
}
return toReturn;
}
请注意,如果您不想包含空子字符串,则可以删除第一个add()。
答案 2 :(得分:0)
听起来很耗费精力。想想你对整个句子的所有排列。
那他们可能会想到是否有人需要定期不需要的东西。
答案 3 :(得分:0)
public static ArrayList getPowerSet(String original){ ArrayList toReturn = new ArrayList();
toReturn.add("");
for (int i = 0; i < original.length(); i++) {
for (int j = i + 1; j <= original.length(); j++) {
toReturn.add(original.substring(i, j));
}
}
return toReturn;
}
答案 4 :(得分:0)
public static ArrayList<String> getPowerSet(String original) {
ArrayList<String> toReturn = new ArrayList<String>();
toReturn.add("");
for (int k = 0; k < original.length(); k++) {
for (int j = k + 1; j <= original.length(); j++) {
toReturn.add(original.substring(k, j));
}
}
return toReturn;
}