2013-11-14 41 views
1

我有一个字符串,我需要循环并创建每个可能的子字符串。例如,如果我有“HelloWorld”,“rld”应该是其中一种可能性。该字符串的方法,子串(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; 
} 
+25

你有没有考虑加入1? –

+2

旁注:你为什么要返回null? –

+0

子串(7,10)换句话说就是确保k = str.length为最大值k –

回答

1

改造独家之间的包容性很简单,当你在整数正在努力。你只需要添加1

String substringInclusive(String s, int a, int b) 
{ 
    return s.substring(a, b+1); 
} 
+0

OH MAN !! Jon Skeet已经回答了32分钟。 – iShaalan

+0

@iShaalan如果它是正确的答案,那么这是正确的答案。无论如何,这个问题需要一个答案。 – Cruncher

1

由于乔恩斯基特正确地指出,加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; 
} 
相关问题