Menu
CoddyTech

Find the First Occurrence in a String

2つの文字列、haystackとneedleが与えられます。needleが最初に現れる位置を、0から数えたhaystack内のインデックスとして返してください。needleがhaystackに一度も現れない場合は、-1を返してください。findやindexOfなどの組み込み部分文字列検索を呼び出すのではなく、自分で検索処理を書いてください。

関数

strStr(haystack: string, needle: string) → integer
haystackstring
検索対象のテキスト
needlestring
探す文字列
戻り値integer
needle の最初のコピーが始まるインデックス。ない場合は -1

制約

  • 1 ≤ haystack.length ≤ 5 × 104
  • 1 ≤ needle.length ≤ 5 × 104
  • どちらの文字列も、小文字の英字だけを含みます。
  • needle は haystack より長い場合があります。その場合、見つからないため、答えは -1 です。

例

入力
haystack = "bananarama"needle = "ana"
出力
1
説明
インデックス1、2、3の文字を並べるとanaになります。2つ目のコピーはインデックス3から始まり、最初のコピーと重なりますが、答えは最初のコピーなので、1です。

lock icon提出時に隠しテスト+16件

challenge icon

発展問題

重なり合う出現箇所も含めて、needleが始まるすべてのインデックスを、引き続きO(n + m)の時間で返せますか?

コードをリセット
def strStr(haystack, needle):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

ケース3

入力

haystack = "bananarama"
needle = "ana"

期待値

1