Algorithm/08. 문자열 검색

8-1. 브루트-포스법(Brute Force Method)

찹키리 2021. 7. 8. 00:32

문자열 검색(String Searching)이란?

  • 어떤 문자열 안에 다른 문자열이 들어 잇는지 조사하고, 들어 있다면 그 위치를 찾아내는 것
  • 편의상 검색할 문자열을 패턴(pattern)이라 하고, 문자열 원본은 텍스트(text)라고 정의

 

 

 

 

 

브루트-포스법

  • 검색할 텍스트의 맨 처음부터 한 칸씩 뒤로 옮기며 패턴 검색
  • 패턴의 앞 글자부터 순서대로 텍스트와의 일치 여부 검색
  • 그러다가 다른 문자가 나타나면 검사를 중단하고 검색할 텍스트의 위치를 한 칸 뒤로 이동
  • 선형 검색을 확장한 알고리즘으로 단순법, 소박법이라고도 함
  • 효율이 좋은 검색법은 아님

 

 

 

[실습 코드]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//브루트-포스법으로 문자열을 검색하는 메서드
static int bfMatch(String txt, String pat) {
    int pt = 0//txt커서
    int pp = 0//pattern 커서
        
    while(pt != txt.length() && pp != pat.length()) {
        if(txt.charAt(pt) == pat.charAt(pp)) {
            pt++;
            pp++;
        } else {
            pt = pt - pp + 1;
            pp = 0;
        }
    }
    if(pp == pat.length()) //검색 성공
        return pt - pp;
    return -1//검색 실패
}
cs

 

 

 

 

 

 

String.indexOf 메서드로 문자열 검색하기

  • java.lang.String 클래스는 문자열을 검색하는 indexOf 메서드와 lastIndexOf 메서드를 제공

 

 

1. int indexOf(String str)
2. int indexOf(String str, int fromIndex)
3. int lastIndexOf(String str)
4. int lastIndexOf(String str, int fromIndex)