この質問は、私の質問hereに関連しています。私の数学が正しいかどうかを確認するために、プログラムで次のカウントを取得しようとしています。
PQRDDDEEEEFFFFFF という単語の文字の並び方で、同じ文字が連続していないものはいくつありますか?
PHPプログラムを使用してこのカウントを決定する方法は?
私のアプローチ
- ヒープのアルゴリズムを使用してすべての可能な順列を生成し、配列に格納しました(ヒープのアルゴリズムがより高速に検出されるため、ヒープのアルゴリズムを使用しました)
- array_unique 関数を使用してすべての重複を削除しました
- 配列を反復処理し、正規表現 /(.)\1/ を使用して隣接する文字が同じである文字列を特定し、隣接する文字が同じでない文字列を新しい配列にコピーしました。
- 新しい配列には、必要な要素のリストがあります。
私のアプローチはうまく機能しています。ただし、大きな文字列 (10 文字を超える文字列) の場合、順列の数が多いためにメモリの問題が発生し、プログラムが機能しません。
これをプログラムで判断する別の方法はありますか?
ノート:
文字列のリストではなく、カウントのみを探しています