問題タブ [longest-substring]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 文字を繰り返さない最長共通部分文字列の長さ
「abcabcbb」を指定すると、答えは「abc」で、長さは 3 です。
「bbbbb」を指定すると、答えは長さ 1 の「b」になります。
「pwwkew」を指定すると、答えは「wke」で、長さは 3 です。答えは部分文字列でなければならないことに注意してください。「pwke」は部分文字列ではなく部分列です。
機能するソリューションを思いつきましたが、いくつかのテストケースで失敗しました。その後、より良い解決策を見つけ、それを書き直して理解しようとしました。以下の解決策は問題なく動作しますが、この問題と約 2 時間格闘した後でも、この特定のコード行が機能する理由を理解できません。
問題の行は
p>なぜこれが機能するのかわかりません。以前の最大値の間の最大値と、現在のインデックスと現在最も長い部分文字列の開始インデックスとの差を取り、1 を追加しています。コードが現在のインデックスとの差を取得していることはわかっています。 startingIndexOfSubstringですが、意図した結果が得られる理由を概念化できません。特になぜそれが機能するのか、誰かが私にこのステップを説明してもらえますか?
substring - インデックスと長さは、文字列内の場所を参照する必要があります。?
私の入力文字列は
inputData = "99998UNKNOWN"
inputData = "01000AMEBACIDE/TRICHOM/ANTIBAC 1"
- inputData = "34343AMEBACIDE/TRICHOM/ANTIBACSADWA1"
ID = inputData.Substring(0,5);
Name = inputData.Substring(5,30);
Level = inputData.Substring(35,1);
以下のエラーが表示されます。インデックスと長さは、文字列内の場所を参照する必要があります。
エラーは、「名前」の部分文字列で指定された長さが最初の入力と一致しないことが原因であることがわかります。入力の長さでこの問題を処理する方法はありますか?
python - 別のリストと照合して、リストから最長一致値を取得する [Python 2.7]
一致するリストは 2 つありますli_a
。与えられたリストは文の一連の文字で構成されていますli_b
が、 は単語のコレクションです。
li_a
プロセスは、アイテムとアイテムを繰り返し一致させることですli_b
。の最初の文字がアイテムにli_a
類似している場合、 の最初の文字は次の文字と結合し、最長一致になるまでプロセスをやり直します。次に、最長期間を分割する必要があり、プロセスは最後まで続きます。に出てこない未知の文字や言葉はそのまま追記します。li_b
li_a
li_a
li_b
最終的な作業は次のようになります。
ここまでの試みですが、これはListsではなく2 つの文字列に対して機能し、未確認の単語を取得しません。
ios - 文字列の配列の最長共通部分文字列を見つける
私の Swift 3.0 アプリでは、6 から 12 文字列の最も長い共通部分文字列を見つけることによって、何かに最適な名前を決定したいと考えています。
文字列の例:
望ましい出力:
最長のサブシーケンスに対して複数の StackOverflow 回答に出くわしましたが、それらのいずれも私のニーズに適応させることができませんでした..
どんな助けでも大歓迎です!
java - 一度に 1 文字を入力文字列に追加して形成できる最長の文字列
最近、あるインタビューでこんな質問を受けました。
辞書と開始文字列が与えられた場合、入力文字列の前後に 1 文字ずつ追加して形成できる最長の単語はどれですか?新しい単語もすべて辞書に含まれている必要があります。
例: input = 'at' Dict = {hat, chat, chats, rat, tat, tats, chatats}
「チャット」を返す理由: at -> hat -> chat -> chats
入力文字列の前後に a ~ z のすべての文字をブルートフォースで追加し、新しい文字列が存在する場合は、26 文字を前後にブルートフォースして最終的な文字列を取得するソリューションを考えました。
毎回26文字すべてを強制的に前後に強制することなく、この問題を解決するためのより効率的な方法があるかどうか疑問に思っていましたか?
私が考えた 1 つのアプローチは、辞書を調べて、入力文字列を変更する長さよりも 1 だけ長いエントリの部分文字列として入力文字列が存在する場合、エントリ文字列から入力部分文字列を削除することでした。
例: 1 回目の繰り返しの後、dict は = {h, chat, chats, r, t, tats, chatats} になります。
また、エントリの元の長さを追跡する各エントリの長さ変数も用意します。しかし、これが正しいアプローチであるかどうか、または機能するかどうかは正確にはわかりません。