2016-10-22 6 views
0

(これをタイトルにすることは何も考えていないので、曖昧または不正確なら謝罪します。この問題を調べるために私はここに来ました)。パターンの文字列の文字を並べ替えるためにループを使用する

文字列を取り出してパターンを入力する方法が必要です。

だから、String s = "abcd".としましょう。この方法はそれを取って印刷する必要があります。"abcd," "bcd," "abc," "cd," "bc," "ab," "d," "c," "b," "a".私はこの作業の仕方を完全に知らないので、何かが役に立ちます。

以下は、私が達成しようとしているのと同様の方法です。

void printSub3(String s){ 
    for(int i = 0; i < s.length(); i++){ 
     for(int j = 0; j < s.length()-i; j++){ 
      System.out.printf(s.substring(s.length()-j-i-1, s.length()-j)+", "); 
     } 
    } 
} 
+0

Stack Overflowは無料の宿題サービスではないので、この質問をトピックとして閉じることにしました。 –

+0

あなたはほとんど存在しています。読みやすくするために、ヘルプ変数 'int n = s.length();'を使用すると役立ちます。 '(int j = i; j> = 0; - j){'は 'j 'を部分文字列の開始位置とし、最大長' n-i'で開始すると、j- 。 –

答えて

1

あなたは、2 N -1に1から数え包含、及び(もの)を取るためにどの文字列の要素を決定するためにビットパターンとして番号を使用して、すべての部分集合のリストを構築することができますそしてどれスキップする(ゼロ):

String str = "abcd"; 
for (int mask = 1 ; mask != 1<<str.length() ; mask++) { 
    StringBuilder bld = new StringBuilder(); 
    for (int i = 0 ; i != str.length() ; i++) { 
     if ((mask & 1<<i) != 0) { 
      bld.append(str.charAt(i)); 
     } 
    } 
    System.out.println(bld); 
} 
0

私はヒントを使用して、自分で質問を試すことをお勧めします:文字列を結果の各文字の存在する可能性のためのフラグとして

使用nビット、どこnはnです入力文字列中にumのcharがあります。範囲[0-(2^n-1)]内のすべての値をカバーするようにフラグを切り替え、それらのビットパターンに対応する文字列を生成します。

ビットシフト操作とビットパターン/マスキングを学ぶのに良い質問です。だから自分でコーディングしてみてください。

関連する問題