2016-11-14 6 views
-2

完全なソリューションはありません!括弧内の部分文字列を取得JAVA

括弧の単一のペアを含む文字列を考えると、再帰的に新しいだけ括弧とその 内容の製紐なので、「XYZ(ABC)123」利回り「(ABC)」を計算します。

parenBit( "XYZ(ABC)123")→ "(ABC)"

parenBit( "X(こんにちは)")→ "(こんにちは)"

parenBit(「(XY )1" )→ "(XY)"

私のソリューションは、それが何をプリントアウトdoesntの

public String parenBit(String str) { 
     char c; 
     int start = 0; 
     int end = 0; 
     for(int i=0; i < str.length(); i++){ 
      c = str.charAt(i); 
      if(c == '('){ 
       start = i; 

      } if(c == '('){ 
       end = i; 
       return str.substring(start, end); 
      } 

     } 

return "andrew"; 
} 

を動作しません。どうして?

+0

2番目のifは 'if(c == ')')' – AhmadWabbi

+1

にする必要があります。これを行うには*再帰的*メソッドを記述する必要があります。あなたの解は再帰を使用しません(=メソッドはそれ自身を呼び出す必要があります)。 – Jesper

+0

あなたの解は、空文字列の最初の出現時に返します。 修正:{}}}} {' – krzydyn

答えて

0

2番目のif条件でタイプミスがあると思います。

まず、閉じ括弧をチェックするif (c == ')')に変更された場合には、第2:あなたは、変更の(ない)

0
public static String parenBit(String str) { 
    char c; 
    int start = 0; 
    int end = 0; 
    for(int i=0; i < str.length(); i++){ 
     c = str.charAt(i); 
     if(c == '('){ 
      start = i; 

     } if(c == ')'){ 
      end = i; 
      return str.substring(start + 1, end); 
     } 

    } 

    return ""; 
} 

説明のためにチェックしています。第二に、start変数は1つだけオフになっているので、1を追加しました。最後に、括弧が見つからない場合はandrewを返すべきではないと思います。そこで空の文字列を返すように変更しました。

関連する問題