Menu
CoddyTech

Find the First Occurrence in a String

두 문자열 haystack과 needle이 주어집니다. 0부터 세어 needle이 처음 나타나는 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를 만듭니다. 두 번째 문자열은 인덱스 3에서 시작해 첫 번째 문자열과 겹치지만, 정답은 첫 번째 문자열이므로 1입니다.

lock icon제출 시 숨은 테스트 +16개

challenge icon

후속 질문

needle이 시작되는 모든 인덱스를 반환하되, 겹치는 항목도 포함하면서 여전히 O(n + m) 시간에 처리할 수 있나요?

코드 초기화
def strStr(haystack, needle):
    # 여기에 코드를 작성하세요
테스트 케이스

케이스 1

케이스 2

케이스 3

입력

haystack = "bananarama"
needle = "ana"

기대값

1