Computer Science/자료구조

[5.29] 07-1 브루트 포스법

토마토. 2021. 5. 29. 11:40

문자열 검색이란? 

string searching - text에서 pattern의 위치를 찾아내는 것

브루트 포스법 알아보기

brute force method - 선형 검색을 확장한 '단순법' 알고리즘이다. 

#브루트 포스법으로 문자열 검색하기

def bf_match(txt:str, pat:str) -> int:
  pt = 0
  pp = 0

  while pt != len(txt) and pp != len(pat):
    if txt[pt] == pat[pp]:
      pt += 1
      pp += 1
    else:
      pt = pt - pp + 1
      pp = 0
  
  return pt - pp if pp == len(pat) else -1

print(bf_match('youngjupark', 'park'))

멤버십 연산자와 표준 라이브러리를 사용한 문자열 검색

멤버십 연산자 membership operator - in/not in을 사용하여 검색하는 것

단, 그 위치는 알 수 없다.

ex) ptn in txt / ptn not in txt -> True / False

find, index 계열 함수로 구현하기

? ? 

str.find(sub[, start[, end]])
str.rfind(sub[, start[, end]])
str.index(sub[, start[, end]])
str.rindex(sub[, start[, end]])

 

'Computer Science > 자료구조' 카테고리의 다른 글

[5.29] 07-3 보이어, 무어법 Boyer-Moor method  (0) 2021.05.29
[5.29] 07-2 KMP법 Knuth Morris Pratt  (0) 2021.05.29
[5.27] 06-9 도수 정렬  (0) 2021.05.27
[5.27] 06-8 힙 정렬  (0) 2021.05.27
[5.26] 06-7 병합 정렬  (0) 2021.05.26