문제 설명
문제 설명: 두 개의 문자열 needle과 haystack이 주어졌을 때, haystack에서 needle이 처음으로 등장하는 인덱스를 반환하세요. 만약 needle이 haystack의 일부가 아니라면 -1을 반환하세요.
예제
예제 1
예제 2
예제 3
예제 4
⚠️제약 조건
- •
1 <= haystack.length, needle.length <= 104 - •
haystack과needle은 모두 소문자 영어 문자로만 구성됩니다.
해결 방법
🎯접근 방식
이 문제는 문자열 검색 문제로, JavaScript의 내장 함수 indexOf를 사용하여 해결했습니다. indexOf 함수는 주어진 문자열(needle)이 다른 문자열(haystack) 내에서 처음 나타나는 위치의 인덱스를 반환하며, 찾을 수 없는 경우 -1을 반환합니다. 핵심 아이디어는 내장 함수를 활용하여 문자열 검색을 효율적으로 수행하는 것입니다.
솔루션 코드
복잡도 분석
O(n * m)O(1)💡상세 설명
이 문제는 두 문자열 needle과 haystack이 주어졌을 때, haystack 문자열에서 needle 문자열이 처음으로 나타나는 위치의 인덱스를 찾는 것입니다. 만약 needle이 haystack에 포함되어 있지 않다면 -1을 반환해야 합니다.
1. 알고리즘의 핵심 아이디어
이 문제를 해결하기 위해 우리는 haystack 문자열에서 needle 문자열을 찾고, 그 시작 위치의 인덱스를 반환하는 방법을 사용합니다. JavaScript에서는 문자열이 다른 문자열 안에 포함되어 있는지를 확인하고 그 위치를 찾는 간단한 방법이 있습니다. 바로 indexOf 메서드를 사용하는 것입니다.
2. 코드의 주요 로직 설명
주어진 코드에서는 indexOf 메서드를 사용하여 haystack에서 needle이 처음 나타나는 위치를 찾고 있습니다. indexOf 메서드는 needle이 haystack에 존재하면 그 시작 인덱스를 반환하고, 존재하지 않으면 -1을 반환합니다.
3. 각 단계별 동작 과정
strStr함수가 호출되면haystack과needle두 개의 문자열이 인자로 전달됩니다.haystack.indexOf(needle)를 호출하여needle이haystack에 포함되어 있는지를 확인하고, 그 시작 위치의 인덱스를 찾습니다.indexOf메서드는needle이haystack에 존재할 경우 그 시작 인덱스를 반환하고, 존재하지 않을 경우 -1을 반환합니다.- 이 반환값을 그대로
strStr함수의 반환값으로 사용합니다.
4. 핵심 변수들의 역할
haystack:needle을 찾고자 하는 대상 문자열입니다.needle:haystack에서 찾고자 하는 문자열입니다.indexOf:haystack에서needle의 시작 인덱스를 찾는 메서드입니다.
5. 왜 이 방법이 효과적인지
indexOf 메서드는 JavaScript에서 문자열 검색을 위해 최적화된 메서드로, 내부적으로 효율적인 알고리즘을 사용하여 빠르게 검색을 수행합니다. 따라서 이 메서드를 사용하는 것은 간단하고 직관적이며, 문제의 요구사항을 충족하는데 효과적입니다. 또한, 코드가 매우 간단하여 유지보수와 이해가 용이합니다. 이 방법은 문자열 검색 문제를 해결하는 데 있어 가장 기본적이고 직접적인 접근 방식 중 하나입니다.