blog

28. 문자열에서 첫 번째로 일치하는 부분의 첨자를 찾습니다.

28. 문자열에서 첫 번째 일치하는 부분의 첨자 찾기 건초 더미와 바늘이라는 두 문자열이 주어졌을 때, 건초 더미 문자열에서 바늘 문자열의 첫 번째 일치하는 부분의 첨자를 찾습니다...

Oct 9, 2025 · 2 min. read
シェア

건초 더미와 바늘의 두 문자열이 주어졌을 때, 건초 더미 문자열에서 바늘 문자열의 첫 번째 일치하는 부분의 첨자를 구합니다. 바늘이 건초 더미에 포함되지 않으면 -1을 반환합니다.

예 1:

입력: 건초더미= "sadbutsad", needle = "sad"
출력: 0
설명: "슬픈"은 아래 첨자 0과 6에서 일치합니다.
첫 번째 일치의 첨자는 0이므로 0을 반환합니다.

예 2:

입력: 건초더미= "leetcode", needle = "leeto"
출력: -1
설명: "leeto"는 "leetcode"에 나타나지 않으므로 -1이 반환됩니다.

팁:

  • 1 <= haystack.length, needle.length <= 401
  • 건초더미와 바늘은 영문 소문자로만 구성됩니다.

문제 해결 아이디어:

원본 건초 더미의 각 문자를 '원점'으로 반복하고 매번 원본 문자열의 '원점'과 일치하는 문자열의 '첫 번째'에서 일치하도록 시도합니다:

일치 성공: 이 일치의 시작점을 반환합니다. 실패: 원본 문자열의 다음 '시작점'을 열거하고 일치를 다시 시도합니다.

public class Problem_0028_ImplementStrStr {
 public int strStr(String haystack, String needle) {
 int n = haystack.length();
 int m = needle.length();
 char[] s = haystack.toCharArray();
 char[] p = needle.toCharArray();
 for (int i = 0; i < n - m; i++) {
 // 원본 문자열의 '원점'과 일치하는 문자열의 '첫 번째'부터 시작하여 일치를 시도합니다.
 int a = i;
 int b = 0;
 while (b < m && s[i] == p[b]) {
 a++;
 b++;
 }
 // 일치가 완료되면 원본 문자열의 '원점' 접미사를 반환합니다.
 if (b == m) return i;
 }
 return -1;
 }
}
Read next

nestjs 업로드 파일 상세 정보

서문 최근 쇼핑몰 프로젝트를 개발할 때, 시스템의 백엔드인 nestjs + mongodb, 업로드 파일 사용은 확실히 필수입니다. 공식 문서는 자세히 작성되어 있지만 실제 전투는 여전히 업로드 파일 프로그램의 공식 권장 사항이지만 multer입니다.

Oct 9, 2025 · 4 min read