문자열 검색(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) |