1

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

然后

子字符串(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;
}
4

2 回答 2

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;
}
于 2014-07-02T15:00:47.560 回答
1

当您使用整数时,从独占到包容之间的转换很简单。您只需添加 1。

String substringInclusive(String s, int a, int b)
{
    return s.substring(a, b+1);
}
于 2013-11-14T19:10:00.070 回答