質問: 119(私は+/- 1でオフになるかもしれません) 私は一日中これをやろうとしていました...そして、ウェブ上で何も見つけられません... 私はいくつかのアイデアを持っています: 1)リストの最初の項目がリストにあります。この場合は4となりますので、次の数字も正しいことを確認してから、次の数字が間違っていて、別の番号を探して送信します残りのリスト[4.:]に9.9を入力し、完全な一致が見つかるまで同じループを再度実行します 2)次に別のアイデアは何とか文字列を使うことです この場合、687の答えを返すstr(list)[1:-1] .find(str(sublist)[1:-1])... これらのアイデアの問題は、それらが長くて醜いと思われ、私はこれらのアイデアを機能させることができていないということです。
回答: 2番目のアイデアは偽陽性をもたらす可能性があります。サブリストが単一の値、たとえば1で、完全なリストの値が11の場合は、一致すると見なされます。文字列に先頭と末尾の区切り文字を追加した場合は、これを避けることができます。 あなたの最初のアイデアは最適な解決策の半分です。あなたが完全な文字列でバックトラックする必要がないように、あなたが "再利用"することができる部分文字列の量を決定するためのアルゴリズム(その名前は現時点では私を逃しています)があります。たとえば、あなたが9.8を予想したところで9.9を見つけたために現在の候補が失敗したとします。部分文字列の最初の要素と一致するため、その要素を再訪する必要はありません。それらはあらかじめ計算されているので、1回のパスで完全なリストを歩くだけで終わります。