例: abc
は、a、b、c、ab、ac、bc、ca、cb、abc、acb、bac、bca、cab、cbaを返します
例: abc
は、a、b、c、ab、ac、bc、ca、cb、abc、acb、bac、bca、cab、cbaを返します
この質問は非常に興味深いと思います。Python 愛好家として、私は @garry_qian の答えに同意できません。Python は非常に便利な標準ライブラリを提供しているので、これを使用しないのは残念です。簡潔で短い (いや、違う...) ですが、論理的には基本的に次のとおりです:
リーリー
を使ったfor
リスト内包表記に過ぎません。 同時に、元の質問に近い文字列のリストを返します。
私が最初に完成させたのは、文字列を置換し、あらゆる長さのすべての文字の組み合わせを返す組み合わせに関する関数でしたが、それらを並べ替えることはしませんでした。
リーリー
テスト: リーリー
予想通り、次の結果が得られました:
'c', 'b', 'a'
'bc', 'ac', 'ab'
'abc'
この書き方は決してベストではありませんが、アイデアとしてはかなり面白いと思います。考え方は、
のすべての組み合わせを考慮することです。つまり、a
を採用するか、b
を採用するか、および c
を採用するかを検討します。したがって、合計 2*2*2 = 8
(2**len(string)
) の組み合わせがあり、以下に対応します:'abc'
的所有組合,那不就是分別考慮 a
要不要取,b
要不要取 和 c
要不要取,於是總共 2*2*2 = 8
(2**len(string)
リーリー
では、ちょっとしたトリックを使って1から7までのバイナリコードを生成し、0と1に基づいてそれぞれの組み合わせにどの文字を使用するかを決定しました。 get_combinations
標準的な答えを取得する必要があります。
すべてのこれにより、組み合わせのすべての順列状況
この関数が生成されます:get_permutations
リーリー
テスト: リーリー
ロジックは非常に単純で、再帰的メソッドを使用してすべての順列を見つけます。 固定長度字元組合
リーリー
結論:
タグも同時にタグ付けされているのでどちらでも書きましょう。ロジックは同じです。
php
和 python
リーリー
php
リーリー
python
リーリー
python2.7、@garry_qian と同じですが、他の Python ソリューションを見るのが面倒なので書いて初めて知りました。 リーリー
P(2,3)
P(3,3)12の可能性
文字列の長さを 2 とすると、すべての組み合わせは 2! + 2! = 4 になります。
文字列の長さを 4 とすると、次の式になります: 4! / 4!一般化されました
n! + n! / (n-1)!
コードは投稿しません