문제 링크
문제 요구 조건
- haystack 에서 needle이 포함되는지 확인
- 포함이 된다면 인덱스를 반환
- 포함이 안된다면 -1을 반환
나의 문제 풀이
이번 문제를 푸는 데에는
substring() 함수를 사용하는 것이 중요했다./**
* @param {string} haystack
* @param {string} needle
* @return {number}
*/
var strStr = function (haystack, needle) {
let index = -1;
for (let i = 0; i < haystack.length; i++) {
if (haystack[i] !== needle[0]) {
continue;
}
const subString = haystack.substring(i, (needle.length + i));
if (subString === needle) {
index = i;
break;
}
}
return index;
};- 반환 인덱스 값을 -1로 세팅
- for문으로 순회하면서 needle의 첫 글자랑 매칭 되는지 확인
- 매칭이 안되면 continue로 아래 로직을 실행하지 않고 다음 순회
- 매칭이 되면 substring으로 해당 지점에서 needle.length까지 텍스트 추출
- 텍스트 비교후 매칭이 되면 인덱스를 업데이트후 종료
정답 문제 풀이
다른 사람들의 문제를 푼 방식은 비슷했지만, 인덱스를 따로 사용하지 않고
-1을 디폴트로 반환하고, 순회하며 매칭이 되는 조건에만 인덱스를 리턴을 하여, 코드가 좀 더 깔끔하고 효율적인 것을 확인할 수 있었다. /**
* @param {string} haystack
* @param {string} needle
* @return {number}
*/
var strStr = function(haystack, needle) {
let n = haystack.length;
let m = needle.length;
for (let i = 0; i <= n - m; i++) {
if (haystack.substring(i, i + m) === needle) {
return i;
}
}
return -1;
};![[LeetCode] Find the Index of the First Occurrence in a String](/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fattachment%253A24003284-054c-4114-a2cc-30c06200a54b%253A16.png%3Ftable%3Dblock%26id%3D2589c76c-6cb4-801e-b337-d0501b2ca67b%26spaceId%3Db4216657-966f-4c29-ae8c-42f6c4adb66d&w=3840&q=75)
