目次
返信内容:
ホームページ バックエンド開発 PHPチュートリアル 文字列を指定すると、考えられるすべての組み合わせを返します

文字列を指定すると、考えられるすべての組み合わせを返します

Jul 06, 2016 pm 01:52 PM
php python

例: 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 は非常に便利な標準ライブラリを提供しているので、これを使用しないのは残念です。簡潔で短い (いや、違う...) ですが、論理的には基本的に次のとおりです: リーリー

この書き方には特別なことは何もなく、2つの

を使ったforリスト内包表記に過ぎません。 同時に、元の質問に近い文字列のリストを返します。


しかし、これは私の中にいくらかの好奇心を呼び起こし、私はそれを自分で書きたいと思いました。同時に、これらの並べ替えや結合ツールを持たない他の言語では、同じロジックを使用してそれを完成させる方が簡単かもしれません。

私が最初に完成させたのは、文字列を置換し、あらゆる長さのすべての文字の組み合わせを返す組み合わせに関する関数でしたが、それらを並べ替えることはしませんでした。

リーリー

テスト: リーリー

予想通り、次の結果が得られました:

  1. 長さ1

    'c', 'b', 'a'

  2. 長さ 2

    'bc', 'ac', 'ab'

  3. 長さ 3

    '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 リーリー

テスト: リーリー

ロジックは非常に単純で、再帰的メソッドを使用して

すべての順列を見つけます。 固定長度字元組合


上記の 2 つの関数を使用すると、答えを見つけることができます:

リーリー


結論:

  1. タイヤを再発明しないでください。疲れるだけでなく、バ​​カに見えてしまいます

  2. 人生は短い、私はPythonを使っています

リーリー

タグも同時にタグ付けされているのでどちらでも書きましょう。ロジックは同じです。

phppython

コード

リーリー php

コード

リーリー python リーリー

python2.7、@garry_qian と同じですが、他の Python ソリューションを見るのが面倒なので書いて初めて知りました。 リーリー

P(2,3)

P(3,3)

12の可能性



文字列の長さを 2 とすると、すべての組み合わせは 2! + 2! = 4 になります。

文字列の長さを 3 とすると、すべての組み合わせは 3 + 3! + 3! = 15

文字列の長さを 4 とすると、次の式になります: 4! / 4!一般化されました

n! + n! / (n-1)!
コードは投稿しません

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

どのようにしてクラスが拡張されたり、PHPでメソッドがオーバーライドされたりするのを防ぐことができますか? (最終キーワード) どのようにしてクラスが拡張されたり、PHPでメソッドがオーバーライドされたりするのを防ぐことができますか? (最終キーワード) Apr 08, 2025 am 12:03 AM

PHPでは、最終的なキーワードを使用して、クラスが継承されないようにし、メソッドが上書きされます。 1)クラスを決勝としてマークする場合、クラスを継承することはできません。 2)メソッドを最終的にマークする場合、メソッドはサブクラスによって書き換えられません。最終的なキーワードを使用すると、コードの安定性とセキュリティが保証されます。

インストール後にMySQLの使用方法 インストール後にMySQLの使用方法 Apr 08, 2025 am 11:48 AM

この記事では、MySQLデータベースの操作を紹介します。まず、MySQLWorkBenchやコマンドラインクライアントなど、MySQLクライアントをインストールする必要があります。 1. mysql-uroot-pコマンドを使用してサーバーに接続し、ルートアカウントパスワードでログインします。 2。CreatedAtaBaseを使用してデータベースを作成し、データベースを選択します。 3. createTableを使用してテーブルを作成し、フィールドとデータ型を定義します。 4. INSERTINTOを使用してデータを挿入し、データをクエリし、更新することでデータを更新し、削除してデータを削除します。これらの手順を習得することによってのみ、一般的な問題に対処することを学び、データベースのパフォーマンスを最適化することでMySQLを効率的に使用できます。

mysqlは支払う必要がありますか mysqlは支払う必要がありますか Apr 08, 2025 pm 05:36 PM

MySQLには、無料のコミュニティバージョンと有料エンタープライズバージョンがあります。コミュニティバージョンは無料で使用および変更できますが、サポートは制限されており、安定性要件が低く、技術的な能力が強いアプリケーションに適しています。 Enterprise Editionは、安定した信頼性の高い高性能データベースを必要とするアプリケーションに対する包括的な商業サポートを提供し、サポートの支払いを喜んでいます。バージョンを選択する際に考慮される要因には、アプリケーションの重要性、予算編成、技術スキルが含まれます。完璧なオプションはなく、最も適切なオプションのみであり、特定の状況に応じて慎重に選択する必要があります。

MySQLインストール後にデータベースのパフォーマンスを最適化する方法 MySQLインストール後にデータベースのパフォーマンスを最適化する方法 Apr 08, 2025 am 11:36 AM

MySQLパフォーマンスの最適化は、インストール構成、インデックス作成、クエリの最適化、監視、チューニングの3つの側面から開始する必要があります。 1。インストール後、INNODB_BUFFER_POOL_SIZEパラメーターやclose query_cache_sizeなど、サーバーの構成に従ってmy.cnfファイルを調整する必要があります。 2。過度のインデックスを回避するための適切なインデックスを作成し、説明コマンドを使用して実行計画を分析するなど、クエリステートメントを最適化します。 3. MySQL独自の監視ツール(ShowProcessList、ShowStatus)を使用して、データベースの健康を監視し、定期的にデータベースをバックアップして整理します。これらの手順を継続的に最適化することによってのみ、MySQLデータベースのパフォーマンスを改善できます。

高負荷アプリケーションのMySQLパフォーマンスを最適化する方法は? 高負荷アプリケーションのMySQLパフォーマンスを最適化する方法は? Apr 08, 2025 pm 06:03 PM

MySQLデータベースパフォーマンス最適化ガイドリソース集約型アプリケーションでは、MySQLデータベースが重要な役割を果たし、大規模なトランザクションの管理を担当しています。ただし、アプリケーションのスケールが拡大すると、データベースパフォーマンスのボトルネックが制約になることがよくあります。この記事では、一連の効果的なMySQLパフォーマンス最適化戦略を検討して、アプリケーションが高負荷の下で効率的で応答性の高いままであることを保証します。実際のケースを組み合わせて、インデックス作成、クエリ最適化、データベース設計、キャッシュなどの詳細な主要なテクノロジーを説明します。 1.データベースアーキテクチャの設計と最適化されたデータベースアーキテクチャは、MySQLパフォーマンスの最適化の基礎です。いくつかのコア原則は次のとおりです。適切なデータ型を選択し、ニーズを満たす最小のデータ型を選択すると、ストレージスペースを節約するだけでなく、データ処理速度を向上させることもできます。

MySQLインストールエラーソリューション MySQLインストールエラーソリューション Apr 08, 2025 am 10:48 AM

MySQLのインストールの一般的な理由とソリューションの失敗:1。誤ったユーザー名またはパスワード、またはMySQLサービスが開始されない場合、ユーザー名とパスワードを確認してサービスを開始する必要があります。 2。ポートの競合では、MySQLリスニングポートを変更するか、ポート3306を占めるプログラムを閉じる必要があります。 3.依存関係ライブラリがありません。システムパッケージマネージャーを使用して、必要な依存関係ライブラリをインストールする必要があります。 4.許可が不十分な場合、インストーラーを実行するには、sudoまたは管理者の権利を使用する必要があります。 5.誤った構成ファイルでは、構成が正しいことを確認するには、my.cnf構成ファイルを確認する必要があります。着実に慎重に作業することによってのみ、MySQLをスムーズにインストールできます。

MongoDBデータベースパスワードを表示するNAVICATの方法 MongoDBデータベースパスワードを表示するNAVICATの方法 Apr 08, 2025 pm 09:39 PM

Hash値として保存されているため、Navicatを介してMongoDBパスワードを直接表示することは不可能です。紛失したパスワードを取得する方法:1。パスワードのリセット。 2。構成ファイルを確認します(ハッシュ値が含まれる場合があります)。 3.コードを確認します(パスワードをハードコードできます)。

MySQLインストール後に開始できないサービスのソリューション MySQLインストール後に開始できないサービスのソリューション Apr 08, 2025 am 11:18 AM

MySQLは開始を拒否しましたか?パニックにならないでください、チェックしてみましょう!多くの友人は、MySQLのインストール後にサービスを開始できないことを発見し、彼らはとても不安でした!心配しないでください、この記事はあなたがそれを落ち着いて対処し、その背後にある首謀者を見つけるためにあなたを連れて行きます!それを読んだ後、あなたはこの問題を解決するだけでなく、MySQLサービスの理解と問題のトラブルシューティングのためのあなたのアイデアを改善し、より強力なデータベース管理者になることができます! MySQLサービスは開始に失敗し、単純な構成エラーから複雑なシステムの問題に至るまで、多くの理由があります。最も一般的な側面から始めましょう。基本知識:サービススタートアッププロセスMYSQLサービススタートアップの簡単な説明。簡単に言えば、オペレーティングシステムはMySQL関連のファイルをロードし、MySQLデーモンを起動します。これには構成が含まれます

See all articles