2017-07-18 10 views
-3

私は電子商取引アプリケーションを開発しており、与えられた文字列からすべての可能な単語を生成する必要があります。指定された文字列から可能なすべての単語を作成します。


入力文字列:{AB}
予想される出力:、AB、BAは、今のように

B、I出力を得ているとして:、ab、b
私は、文字列を生成するために最後からバックトラック中に問題に直面しています。

package com.ecommerce.util; 

import java.util.HashSet; 

public class Combinations { 
    private StringBuilder output = new StringBuilder(); 
    private final String inputstring; 

    public Combinations(final String str) { 
     inputstring = str; 
     System.out.println("The input string is : " + inputstring); 
    } 
    public HashSet<String> combine() { 
     HashSet<String >set=new HashSet<>(); 
     combine(0,set); 
     System.out.println(set); 
     return set; 
    } 

    private void combine(int start,HashSet<String >set) { 
     for (int i = start; i < inputstring.length(); ++i) { 
      output.append(inputstring.charAt(i)); 
      System.out.println(output); 
      set.add(output.toString()); 
      if (i < inputstring.length()) 
       combine`enter code here`(i + 1,set); 
      output.setLength(output.length() - 1); 
     } 
    } 
} 

ありがとうございました。

+2

これではありませんコードライティングサービス。これまでに試したことを投稿して、あなたの試行についての具体的な質問をしてください。 – Malphrush

+0

まず、指定された文字列のすべての組み合わせを計算してから、各組み合わせに対してすべての置換を見つける必要があります。 –

+0

@Malphrush:私はコードスニペットを添付しました。 –

答えて

1

あなたが探しているものは、パワーセットと同じものです。 {a, b}の例では、これは{{}, {a}, {b}, {a, b}}のセットです。それを計算するための簡単なアルゴリズムがありますが、ここにはSO Obtaining a powerset of a set in Javaがあります。

あなたはまた、ウィキペディアの記述と擬似コードを見つけることができます:Power set at Wikipedia


注パワーセットが定義によっても、空のセット{}が含まれていることを、あなただけの得られた結果からそれをsubstractできますリンクされたアルゴリズムによって(または作成時に直接それを拒絶する)。

あなたがabを取得したい場合にも、(それがが定義によって作品を設定する方法です)要素の順序のために気にしないだろうともbaあなただけpowerSet方法の出力に置換方式を使用することができます各要素の文字のすべての順列を作成します。これは、すでにここで例えば、SOで答えた:あなたはそのコードスニペットを使用してSet<Set<T>>permutation(String str)を返すリンク方法powerSet(Set<T> originalSet)を使用することができます変更なしGenerating all permutations of a given string


を:

String input = ... // Your input here 

// Convert the input into a set of character 
final Set<Character> inputSet = new HashSet<>(); 
for (int i = 0; i < input.length(); i++) { 
    inputSet.add(input.charAt(i)); 
} 

// Use the method to compute the power set 
Set<Set<Character>> powerSet = powerSet(inputSet); 

// Output all elements 
for (Set<Character> element : powerSet) { 
    // Combine the character in the set to a String 
    StringBuilder sb = new StringBuilder(); 
    for (Character c : element) { 
     sb.append(c); 
    } 

    // Here is a final element ready for collection or a print 
    String outputElement = sb.toString(); 
    // The method already prints the results by itself, you can modify it easily such that it returns a Set<String> or similar 
    permutation(outputElement); 
} 
+0

@ザブバは大変感謝しています! –

関連する問題