我有一个字符串,我需要循环并创建每个可能的子字符串。例如,如果我有“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;
}
答案 0 :(得分:1)
当你在整数中工作时,独占与包容之间的转换很简单。你只需加1。
String substringInclusive(String s, int a, int b)
{
return s.substring(a, b+1);
}
答案 1 :(得分:1)
正如Jon Skeet正确地指出,添加1将是正确的做法,因为String.substring中的第二个参数不包括在内。
但是你的答案不是递归的,下面是递归解决方案:
public String parenBit(String str) {
if(str.charAt(0)!='(')
return parenBit(str.substring(1));
if(str.charAt(0)=='('&&(str.charAt(str.length()-1)!=')'))
return parenBit(str.substring(0, str.length()-1));
return str;
}