2016-05-29 26 views
-2

文字列のすべての順列を見つけるためのコードを書く必要があります。にはという特定の文字列の位置があります。私はすでにこのコードは、文字列のすべての可能な順列「学生」を印刷したStringの順列文字列の順列と特定の文字列の位置

public class StringCombi2 { 

public static void permutation(String str) { 
permutation("", str); 
} 

private static void permutation(String prefix, String str) { 
int n = str.length(); 
if (n == 0) System.out.println(prefix); 

else { 
    for (int i = 0; i < n; i++) 

     permutation(prefix + str.charAt(i), str.substring(0, i) + str.substring(i+1, n)); 
} 


} 

public static void main(String arsd[]) 
{ 
permutation("student"); 
} 
} 

を見つけるために、stackoverflowのからこのコードを発見しました。

今私は、私は誰も私を助けてit..can見つける方法を確認していない文字列「Studten」の位置を見つけ、その位置(例、i番目の位置)

を印刷する必要があります...

例: 出力はこの

学生 studetn studnet studnte studten studtne stuedntのように生成されます stuedtn stuendt stuentd 。 。 。

あなたが表示された繰り返しをしたい場合はStudtenだから反復4.文字列「Studten」の位置に生成された文字列は、私は、この使用してJavaコードを見つける必要があり4.

...

+0

あなたは位置とはどういう意味ですか?もっと説明できますか? – Rishi

+0

@Rishi私は出力反復ごとに、このコードを実行し、このように印刷します。.. 学生 studetn studnet studnte studten studtne stuednt stuedtn stuendt stuentd 。 。 。 。 スタテンが印刷されている特定のテキストを、どの繰り返しで見つける必要があります... – JavaLearner1

答えて

1

ですあなただけが気に反復を表示したい場合は、あなたに、

public class StringCombi2 { 

    private static int counter = 0; //create counter 

    public static void permutation(String str) { 
     permutation("", str); 
    } 

    private static void permutation(String prefix, String str) { 
     int n = str.length(); 
     if (n == 0) { 
      System.out.println(counter + ": " + prefix); //print counter with permutation 
      counter++; // increment counter 
     } else { 
      for (int i = 0; i < n; i++) 
       permutation(prefix + str.charAt(i), str.substring(0, i) + str.substring(i + 1, n)); 
     } 
    } 

    public static void main(String arsd[]) { 
     permutation("student"); 
    } 
} 

:順列出力は、最も簡単な方法は、グローバルカウンタを作成順列とカウンターを印刷し、直後にカウンターをインクリメントするだろう別の場所に置くことができます現在の順列が探している順列と等しいかどうかを調べるf文です。

public class StringCombi2 { 

    private static int counter = 0; 

    public static void permutation(String str) { 
     permutation("", str); 
    } 

    private static void permutation(String prefix, String str) { 
     int n = str.length(); 
     if (n == 0) { 
      if (prefix.equals("studten")) { 
       System.out.println(prefix + " is at iteration: " + counter); 
      } else { 
       counter++; 
      } 

     } else { 
      for (int i = 0; i < n; i++) 
       permutation(prefix + str.charAt(i), str.substring(0, i) + str.substring(i + 1, n)); 
     } 
    } 

    public static void main(String arsd[]) { 
     permutation("student"); 
    } 
} 

とあなたの出力は次のようになります:あなたはそれを行うときは、「studten」が2回表示されていることを見つける

studten is at iteration: 4 
studten is at iteration: 629 
関連する問題