サブセットの[アルゴ] 643すべての順列

無重複文字の文字列を考えると、文字列のすべての順列とそのすべての部分集合のリストを返します。

 

セット=「ABC」、全ての順列である[「」、「」、「AB」、「ABC」、「AC」、「ACB」、「B」、「BA」、「BAC」、「BC」、「 BCA」、 『C』、 『CB』、 『CBA』、 『CA』、 『タクシー』]。

設定=「」[「]、すべての順列があります」。

セット= nullは、すべての順列です[]。

 

パブリック クラスソリューション{
   公共の一覧<文字列> allPermutationsOfSubsets(文字セット){
     // ここにあなたのソリューションを書く 
    一覧<文字列>リスト= 新しい ArrayListを<> (); 
    セット <文字>メモ:charSet = 新しい HashSetの<> (); 
    ヘルパー(セット、メモ:charSet、 0、リスト、新しいStringBuilderの());
    戻り値のリスト。
  } 

  プライベート ボイドヘルパー(文字列str、セット<キャラクター>メモ:charSet、INT NUM、リストの<string> 結果、StringBuilderのSB){ 
    result.add(sb.toString())。
    以下のためのint型私= 0; I <str.length(); I ++ ){
       場合(charSet.contains(str.charAt(I))){
         続けます
      } 
      sb.append(str.charAt(I))。
      charSet.add(str.charAt(I)); 
      ヘルパー(STR、メモ:charSet、NUM + 1 、その結果、SB)。
      sb.deleteCharAt(sb.length() - 1 )。
      charSet.remove(str.charAt(I)); 
    } 
  } 
}

 

おすすめ

転載: www.cnblogs.com/xuanlu/p/12610087.html