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
   328   329   330   331   332   333   334   335   336   337   338