我需要使用substring,但我需要第二个参数是包容性的

时间:2013-11-14 18:36:45

标签: java string substring

我有一个字符串,我需要循环并创建每个可能的子字符串。例如,如果我有“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;
}

2 个答案:

答案 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;
}