サブリングのリストと文字列を指定すると、リスト内のアイテムがサブストリングである場合はそれを出力します。
組み込みメソッド (contains、.substring など) を使用せずにこれを行う最も時間/空間効率の良い方法は何ですか?
例:
入力: リスト:["cat", "dog", "foo", "foopoo", "foopo", "nope", "dogf"]
文字列: "cardogfoopoo"`
出力: ドッグ フー フープー フーポ ドッグフ
私の考え:
したがって、これまでの私の考えは、指定された文字列をループして、各文字をインデックスの配列リストにマップすることです
<(c, [0]), (a, [1]), (r, [2]), (d, [3]), (o, [4,7,8,10,11]), ( g, [5]), (f, [6]), (p, [4])>
次に、部分文字列のリストをループします。
for (int x = 0; x < list.length; x++) {
String s = list.get(x);
if (s.get(s.charAt(0)) != null)
//loop through, comparing from whether the word is in the string
説明:
「c」はマップ内のインデックス 0 にあります。
「cat」の長さをループし、0 から「cat」の長さと同じかどうかを比較します
はいの場合は、印刷します。
ただし、これは、「foo」がすでに部分文字列であることがわかっている場合、「foooo」が部分文字列であるかどうかを簡単に確認できるという事実を利用していません(すでに foo をループする必要はありません)。
これを行うためのより効率的な方法があると確信しているため、私はそこで少し立ち往生しています。「contains」などを使用せずに(時間効率が良くありません)