Page 333 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 333
41 scanf("%s", s2);
42 idx = bm_match(s1, s2); /* 문자열 s1에서 문자열 s2를 Boyer-Moore법을 사용해 검색 */
43 if(idx == -1)
44 puts("텍스트에 패턴이 없습니다.");
45 else
46 printf("%d번째 문자부터 match합니다.\n", idx + 1);
47
48 return 0;
49 }
연습 Q12 Boyer-Moore법을 구현한 프로그램의 검색 과정을 자세히 출력하는 프로그램을 작성
문제 하세요.
strstr 함수
C 언어는 문자열을 검색하는 표준 라이브러리 strstr 함수를 제공합니다.
strstr 함수
헤더 #include <string.h>
형식 char *strstr(const char *s1, const char *s2);
s1이 가리키는 문자열에서 s2가 가리키는 문자열과 일치하는(널 문자를 포함하지 않는) 문자열을 찾습니
해설
다. 가장 앞쪽에 나오는 문자열을 찾습니다.
찾아낸 문자열에 대한 포인터(첫 번째 문자에 대한 포인터)를 반환합니다. 찾지 못하면 널 포인터를 반환합
반환값
니다. s2가 길이가 0인 문자열이면 s1을 반환합니다.
strchr, strrchr 함수와 마찬가지로 찾은 위치의 인덱스가 아닌 그 문자에 대한 포인터를 반환
한다는 점을 주의해야 합니다. 예를 들어, 그림 8-11의 경우 텍스트의 앞쪽에서 3번째 문자
인 'A'에 대한 포인터를 반환합니다. 검색에 실패하면 널 포인터를 반환합니다.
보충수업 8-4 문자열 검색 알고리즘의 시간 복잡도와 실용성
텍스트의 문자 개수가 n이고 패턴의 문자 개수가 m이라고 할 때 이 장에서 학습한 세 가지 문자열 검
색 알고리즘의 시간 복잡도와 실용성을 알아보겠습니다.
08•문자열 검색 333