2016-04-29 14 views
-7

私は以前にこの質問をしてきましたが、何人かのreaseonの人々はその繰り返しを言っています!私は出力があるべき文字列「ABC」を持っている場合例えば文字列を返す文字列の置換方法[]

public String[] permutations(String str){//code} 

: 、B、C、AB、AC、私が見つけ soultionsはすべて無効 私はMethodeのは、このようになりたいです voidから見つけたメソッドをStringに変換しようとしましたが、できませんでした。常にエラーが発生する

+1

投稿する[最小限で完全であり、検証可能な例](http://stackoverflow.com/help/mcve)をご覧ください。 – MikeCAT

+1

ようこそ。あなたのコードを表示し、あなたが得ているエラーを投稿してください。 – randominstanceOfLivingThing

+0

これまでに何がありますか? –

答えて

0

以下を試してください。私はあなたがどんな種類のものを(もしあれば)適用しているのかわからないので、私はちょうどそれをやっていません。

public String[] permutations(String str) { 
    if (str.length() == 0) { 
     return new String[0]; 
    } else if (str.length() == 1) { 
     String[] s = new String[1]; 
     s[0] = str; 
     return s; 
    } 
    Set<String> permutations = new HashSet<>(); 
    for (int i = 0; i < str.length(); i++) { 
     char c = str.charAt(i); 
     String part = str.substring(0, i) + str.substring(i + 1); 
     String[] rem = permutations(part); 
     for (String s : rem) { 
      permutations.add(s); 
      for (int j = 0; j <= s.length(); j++) { 
       String t = s.substring(0, j) + c + s.substring(j); 
       permutations.add(t); 
      } 
     } 
    } 
    return permutations.toArray(new String[permutations.size()]); 
} 
+0

こんにちは、 を投稿してくれてありがとうございます。ソリューションは私のものより優れていますが、いくつかの順列はスキップします。 "abc"入力の場合、 "bca"と "cba"をスキップします –

+0

編集されました。申し訳ありませんが、正確なはずです。私はちょうど

+0

ありがとう、その作業中 –