【发布时间】:2015-07-22 01:41:42
【问题描述】:
我正在尝试创建一个数据结构,它包含所有可能的子字符串组合,这些组合加起来是原始字符串。例如,如果字符串为"java",则有效结果为"j", "ava"、"ja", "v", "a",则无效结果为"ja", "a" 或"a", "jav"
我很容易找到所有可能的子字符串
String string = "java";
List<String> substrings = new ArrayList<>();
for( int c = 0 ; c < string.length() ; c++ )
{
for( int i = 1 ; i <= string.length() - c ; i++ )
{
String sub = string.substring(c, c+i);
substrings.add(sub);
}
}
System.out.println(substrings);
现在我正在尝试构建一个仅包含有效子字符串的结构。但它几乎没有那么容易。我陷入了一个非常丑陋的代码的迷雾中,摆弄着索引,而且还没有完成,很可能完全走错了路。有什么提示吗?
【问题讨论】:
-
List<String>保存有效子字符串有什么问题?或者你真的想找到一种数据类型来有效地只表示有效的子字符串? -
假设您的意思是 proper 子字符串,因为空字符串也是子字符串。
-
不不,这与结构无关,我正在构建一个
Set<List<String>>,但它甚至可能是一个二维数组,我的问题是逻辑,如何找到合适的子字符串 -
@aioobe 是的,正确的不是空子字符串
-
你应该尝试递归:取第一个字符,然后分割或不分割,然后分割其余的。
标签: java string algorithm recursion iteration