2707。文字列内の余分な文字
難易度: 中
トピック: 配列、ハッシュ テーブル、文字列、動的プログラミング、トライ
0 インデックス付き 文字列と単語辞書が与えられます。各部分文字列が辞書に存在するように、 を 1 つ以上の 重複しない 部分文字列に分割する必要があります。 s には、どの部分文字列にも存在しない 余分な文字 が含まれている可能性があります。
最適に分割した場合に残る余分な文字の最小数を返します。
例 1:
- 入力: s = "leetcode"、dictionary = ["leet","code","leetcode"]
- 出力: 1
- 説明: s を 2 つの部分文字列に分割できます: インデックス 0 から 3 の「leet」とインデックス 5 から 8 の「code」。未使用の文字は 1 つだけ (インデックス 4) なので、1 を返します。 .
例 2:
- 入力: s = "sayhelloworld"、dictionary = ["hello","world"]
- 出力: 3
- 説明: s を 2 つの部分文字列、つまりインデックス 3 から 7 の「hello」とインデックス 8 から 12 の「world」に分割できます。インデックス 0、1、2 の文字はどの部分文字列でも使用されず、したがって、余分な文字とみなされます。したがって、3 を返します。
制約:
- 1
- 1
- 1
- Dictionary[i] と s は英小文字のみで構成されます
- 辞書には異なる単語が含まれています
ヒント:
- ここで動的プログラミングを使用できますか?
- s[0:i] を最適に分割する場合、DP[i] を最小の追加文字として定義します。
解決策:
最適なセグメンテーション後の部分文字列 s[0:i] 内の余分な文字の最小数を dp[i] で表す dp 配列を定義できます。
アプローチ:
-
動的プログラミングの定義:
- dp[i] を部分文字列 s[0:i] 内の余分な文字の最小数とします。
- dp[i] を計算するには、次のことができます。
- 文字 s[i-1] を余分な文字とみなし、次のインデックスに移動します。
- または、インデックス i で終わる部分文字列が辞書に存在するかどうかを確認し、存在する場合は、それを使用して余分な文字を減らします。
-
遷移:
- 各インデックス i について、次のいずれかを行います。
- s[i] を追加文字として扱う場合は、dp[i-1] に 1 を追加します。
- 考えられるすべての部分文字列 s[j:i] (j
- 各インデックス i について、次のいずれかを行います。
-
結果:
- dp[len(s)] の値により、文字列 s 全体における余分な文字の最小数が得られます。
このソリューションを PHP で実装してみましょう: 2707。文字列内の余分な文字
<?php /** * @param String $s * @param String[] $dictionary * @return Integer */ function minExtraChar($s, $dictionary) { ... ... ... /** * go to ./solution.php */ } // Test cases echo minExtraChar("leetscode", ["leet","code","leetcode"]); // Output: 1 echo "\n"; echo minExtraChar("sayhelloworld", ["hello","world"]); // Output: 3 ?>
説明:
-
基本ケース:
- 空の文字列には余分な文字が存在しないため、dp[0] = 0。
-
辞書検索:
- 定数時間検索のために array_flip() を使用して、辞書の単語をハッシュ マップに保存します。
-
遷移:
- 各位置 i について、考えられるすべての部分文字列 s[j:i] をチェックします。部分文字列が辞書に存在する場合は、dp[i] 値を更新します。
-
時間計算量:
- 時間計算量は O(n^2) です。ここで、n は文字列 s の長さです。これは、インデックスごとに、以前のすべてのインデックスをチェックして部分文字列を形成するためです。
テスト結果:
辞書 ["leet","code","leetcode"] を含む入力 "leetscode" の場合、余分な文字 ("s") が 1 つだけ残っているため、関数は正しく 1 を返します。
辞書 ["hello","world"] を使用した入力 "sayhelloworld" の場合、最初の 3 文字 ("say") が余分であるため、関数は 3 を返します。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
- GitHub
以上が文字列内の余分な文字の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

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

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ホットトピック



