【发布时间】:2013-11-14 18:36:45
【问题描述】:
我有一个字符串,我需要循环并创建每个可能的子字符串。例如,如果我有“HelloWorld”,“rld”应该是其中一种可能性。 String方法,substring(int i, int k)不包含k,所以如果
|H|e|l|l|o|W|o|r|l|d|
0 1 2 3 4 5 6 7 8 9
然后
substring(7,9) 返回“rl”
我将如何解决这个问题并让它在包容性方面发挥作用?我理解为什么子字符串不应该等于创建它的字符串,但在这种情况下,这对我很有帮助。
来自 Codingbat 的示例:http://codingbat.com/prob/p137918
我能想到的:
public String parenBit(String str) {
String sub;
if (str.charAt(0) == '(' && str.charAt(str.length() - 1) == ')')
return str;
for (int i = 0; i < str.length() - 1; i++) {
for (int k = i + 1; k < str.length(); k++) {
sub = str.substring(i,k);
}
}
return null;
}
【问题讨论】:
-
你考虑过加1吗?
-
旁注:你为什么返回
null? -
substring(7,10) 换句话说就是确保 k = str.length 的最大值为 k
-
啊。阅读 CodingBat 页面,我认为您有两个误解。首先,您的解决方案不是递归的。其次,它不是解决所提出问题的方法,它不是生成所有可能的子字符串 - 而是找到 '(' 和 )' [包括括号] 之间的子字符串。
-
I understand why a substring shouldn't be able to equal the String it was created from为什么?我会称“helloworld”为“helloworld”的子字符串。我通常也会将 A 称为 A 的子集(只要我们不是在谈论真子集)